2017-02-15 50 views
-2

我在一個項目中有3個分支,本來應該是從開始就離散分離的,但是,唉,我還在學習git,並且在我的工作的一半時間他們混在一起。在git分支之間進行差異化排序,改變分支

目前我可以在master和我的dev-1分支之間切換。在此過程中,我得到的

M this/is/a/file.path M this/is/also/a/file.path M this/is/a/file.path

顯示,沒有提交或積攢的變化,我不認爲我想做但我不能切換了我的兩個分支dev-2

我首先想知道上面的輸出實際上是什麼意思。我發現了一些例子,說這些文件已被修改,這是真的,但爲什麼我不需要在masterdev-1之間切換之前存儲或提交它們?

此外,我想我的master分支是完全乾淨的,只對我的dev-1dev-2分支的變化,但我不知道最好的方式做到這一點,因爲我的masterdev-1分支似乎共享信息。

+0

查看http://stackoverflow.com/questions/22053757/git-checkout-another-branch-when-there-are-uncommitted-changes-on-the-current – torek

+0

你在問三個問題。考慮將它們分成三個單獨的SO問題。 –

回答

0

對於您所看到的顯示,左欄M(2cd和第3條記錄)表示文件已在臨時區域(更改要提交)中添加更改,右側列M(第1條記錄)表示更改已存在沒有分階段(更改沒有提交進行提交)。

當你想在沒有提交或存儲變化的情況下切換到另一個分支時,git將保護更改並停止切換到另一個分支。如果您確實沒有更改,則可以通過git checkout -f branchname強制切換到另一個分支。這會導致您無法在歷史中找到這些更改,因爲您沒有犯下這些更改。

完全乾淨的分支(沒有任何提交)不存在。如果您不想要在主分支上提交的最新更改,則可以通過git reset --hard HEAD~n進行重置,n是您要刪除的最新提交計數。