2017-08-15 105 views
0

我在主分支中做了一些更改,但沒有提交它們,我檢查了開發分支。我期待着拋出一個錯誤,但不是那樣,我在master分支上的變化與開發分支合併在一起。git:當我切換分支時,我的未提交更改被攜帶併合並

$ git checkout development 
Switched to branch 'development' 
M  pom.xml 
Your branch is up-to-date with 'origin/development'. 

取而代之的是我期待下面的錯誤,這樣我就可以藏匿或在結賬前提交我的變化:

error: You have local changes ....; cannot switch branches. 

是否有人知道爲什麼會發生或我怎麼能阻止它再次發生?

+0

更確切地說,我的第一手結帳命令是一個錯誤,我不應該這樣做。這就是我期待拋出錯誤的原因。這是git的默認行爲嗎? – leventunver

+0

是的,AFAIK它是git的默認行爲。 –

+1

工作樹中的更改不是任何分支的一部分,除非您提交它們。當你簽出另一個分支時,如果Git與新分支中受影響的文件的內容不衝突,它將保留它們。 – axiac

回答

2

據我所知,這是Git的默認行爲。切換分支時,您隨身攜帶工作目錄。我似乎也回想起早期版本,這是而不是的情況。

您可能無法避免發生這種情況,但您可以在切換分支之前始終確保您的工作目錄(和舞臺)是乾淨的。或者,你可以對你的工作做出承諾,或藏匿。

+1

...以及它是默認行爲的原因是'git'假設你不想因爲切換分支而失去工作。例如,你開始在'master'上編輯一個文件,然後意識到你應該先打開一個功能分支。 – larsks

+0

...這是非常容易回滾 - 只是'結賬',你回到了你的位置。 – instantepiphany

+0

@larsks這就是爲什麼我期待着一個錯誤。通過這種方式,你不會失去你的工作,但是你也不能切換你的分支,除非你採取了一些行動。我就是這樣記得像蒂姆。 axiac的評論也是有意義的,因爲工作樹不屬於任何地方,所以它不應該成爲一個問題。我可以回到我的主分支並隨時提交它們。 – leventunver

相關問題