2012-04-11 51 views
1

最近我的團隊在GIT上遇到了很多麻煩,因爲中止了pull命令。爲什麼GIT在清除由於引入更改而觸發的合併中止時會清理乾淨?

如果用戶本地修改不在索引上並拉動,我看到git嘗試開始將合併應用於master和abort。然後整個結賬處於一個幾乎無法恢復的可怕狀態。在過去,我認爲GIT會在嘗試合併之前運行某種檢查來識別這些問題。

即使有一個乾淨的狀態(沒有提交),我已經看到同樣的事情至少會隨機發生一次。我明白,沒有重新綁定,你可能會被迫在解決合併衝突的時候解決,但這不是正在發生的事情。

我們正在使用gitolite。我主要使用命令行,但尚未遇到這些問題。團隊的其他成員正在使用git-gui,或者在1例TortoiseGit中使用。

混帳GUI版本0.13.GITGUI
Git版本1.7.8.msysgit.0
的Tcl/Tk版本8.5.1
TortoiseGit 1.7.6.0

我們不與分行工作不亞於我們可以,但覺得這應該工作。
爲什麼GIT允許您在試圖訓練殘骸時嘗試拉動?
爲什麼GIT不能幹淨地中止?

+0

在第三段中,我的意思是我已經看到一個倉庫從無到有,無法通過運行git pull來承諾處於流水狀態,並且它在沒有進入「合併」狀態的情況下中止。 – user1326955 2012-04-12 14:38:30

+0

我一直有類似的問題,到目前爲止,我可以暫時「修復」問題的唯一方法之一是對我目前工作的本地副本進行備份,然後在第一個地方刪除所有內容(包括.git目錄)目錄。然後我告訴git創建一個新的存儲庫,然後可以再次從主存儲庫中「拉出」。 – stealthyninja 2012-06-28 17:28:44

回答

1

「git pull」與「git fetch + git merge」相同。所以,當git中止時,它正在合併。

當git嘗試合併一個分支時,它會盡可能「做到」。可以合併的文件將被合併,並且不能自動合併的文件將保持「已修改」狀態。開發人員必須手動檢查文件才能完成合並。

如果一個不完整的「混帳拉」後,喜歡乾淨的狀態(或「混帳合併」),你可以很容易地回到你的最後一次修改在合併之前,用命令:

git reset --hard my_local_branch 

在你的情況,我想「my_local_branch」是「主人」。

+0

這是我理解得很好的GIT的一部分。這並不回答我問的問題。這將刪除所有未提交的本地修改。這不會讓你進入一個乾淨的狀態,因爲你需要運行一個額外的命令來移除未跟蹤的文件(這將導致下一次拉中止)。 – user1326955 2012-04-12 14:33:30

相關問題