2012-06-27 32 views
1

git pull週期性我注意到命令有時會與錯誤結束像爲什麼git不會自動將無衝突的更改合併到本地修改的文件中?

Your local changes to the following files would be overwritten by merge: 
app/Ribbon.xaml 
Please, commit your changes or stash them before you can merge 

在我已經一行修改這個文件在本地這種特殊情況下,並在資源庫中的新版本也一個遙遠線改變 - 沒有衝突,沒有重命名,行結尾沒有變化,沒有子模塊。因此,在這種情況下,我希望混帳,而不需要我git commitgit stash ...
自動合併更改我知道Git是能夠自動合併更改(它通常是這樣),但不是在這種情況下。

而問題:什麼可能會阻止git自動合併無衝突的更改(到本地修改的文件中)?

我想,我的問題可能會遺漏一些數據。如果是這樣,讓我知道還有什麼應該檢查。


[27.JUN.2012 14:15]根據回答中的提示,git拒絕將任何更改合併到本地修改的文件是正常的策略。考慮到這一點,我會把這個問題改爲類似 的問題如何讓git自動將更改合併到本地修改的文件中

回答

0

我認爲這只是git的自然行爲。由於你的文件沒有上傳或提交,所以git並不知道你想要對文件做什麼。 git最好拒絕拉,而不是猜測你的文件意圖是什麼。我通常在拉動之前隱藏未經處理和未經處理的變化,然後再應用。

+0

那麼,以我在過去的SVN爲基礎的經驗,在這種情況下,我只會留下1個選項git:將修改合併到未修改的未提交文件,並將其保留在那裏。 git可能會考慮哪些其他選項?放棄更改? BTW Git並不在乎(拉時),本地修改的文件,如果他們沒有在遠程回購的新版本......雖然總的來說你是對的:Git是能夠只對提交的文件合併更改,或者開發人員不得不周旋於地。 – AntonK

0

Git在它的倉庫中的項目根目錄下的.git /目錄下工作。

Git使用此存儲庫進行拉和合並時進行比較。

在你的情況,Git是足夠聰明,你已經做出改變,但不能添加或承諾他們,因此混帳將無法對他們的工作。

即使更改位於代碼的單獨區域中,您也會收到消息,因爲您實際上尚未將該文件添加到git中,而git實際上並不知道是否會有衝突......直到git '看到'文件。如果您git add然後git commit文件,所以它是在倉庫中,然後混帳可以在其「工作」,如果變化在不同的區域這將是能夠做到這一點自動合併你看的見。

所以它給出了這個消息。

的選項有:

  • 添加並提交本地文件,然後混帳可以做合併。

  • 藏匿的局部變化來拯救他們一邊再拉新的服務器上的文件。

  • 使用目前的變化的一個分支 - 使用Google Checkout,然後再切換回主和使用復位。

+0

好了,你肯定是正確的,但我希望處理本地修改的文件:) – AntonK

+0

使用git更混帳時已經更聰明,你會發現在git的一些不錯的智慧太:) –

+0

增加了更多的澄清。 –

相關問題