2017-06-15 144 views
0

對不起,如果這個問題是無知的,我剛開始使用Git。昨天我創建了一個帶有主分支的本地存儲庫,然後創建了一個名爲'firstbranch'的新分支。我會在'firstbranch'中做一些實踐工作,然後添加/提交更改,然後將其合併到主分支中。這是主意。然而,今天我選擇了離開的地方,但現在我正在修改'第一分支',沒有合併甚至不承諾,它正在對主人進行修改。有什麼我做錯了,或者這是否應該發生?我顯然希望在不更新主服務器的情況下將更改設置爲'firstbranch',以防我決定取消工作。Git master分支正在自動更新

+1

我想你結帳出主,忘了回去第一枝。 – eftshift0

+0

你如何知道'master'分支上的變化?特別是因爲你沒有做任何事情? – axiac

+0

你確定你是在正確的分支?執行'git log --graph --oneline --decorate --all'並告訴我們HEAD指向的位置。 – Makoto

回答

1

在git中有三種不同類型的存儲:工作樹,索引和數據庫。瞭解這些如何相互作用是非常重要的。

通常,工作樹是您直接與文件交互的地方(即您可以在文件資源管理器或IDE中看到它們;您可以在文本編輯器中使用它們)。在工作樹的頂部通常有一個.git/目錄,其中包含索引和數據庫等等。該指數是變化的階段(由git add)。該數據庫包含您的項目歷史記錄(它是提交和參考的地方)。

特別是,分支(它是一種類型的ref)存在於數據庫中,而其他地方不存在。 (索引和工作樹可以「檢出到一個分支」,但這更像是工作樹的狀態,而不是關注分支本身的任何事情。)

我認爲你必須遵守的是你讓一些然後(沒有提交它們)檢查出另一個分支,並且更改仍然存在。這是因爲他們在工作樹上。他們還不屬於任何分支。通常檢查分支可能需要git將更改應用於工作樹,如果這些更改會影響具有本地更改的文件,那麼結帳將被拒絕;但是如果允許結賬,那麼工作樹的變化就會隨之而來。這是爲了您的方便,儘管它可能會造成混淆。

如果你想獲得你的局部工作正在進行「出路」,讓你可以檢查出另一個分支正是,因爲它是在數據庫中,你可以

(1)使用git stash把本地更改到臨時提交,您可以從中取回這些數據(與git stash pop),或

(2)使用git worktree檢查另一分支出來到一個單獨的文件系統路徑

您也可以使用各種選擇ns與git showgit diff來檢查給定分支的頭部提交(等等)。我建議查看這些命令的git文檔。

+0

這就是我一直在尋找的謝謝! –