2014-01-05 48 views
0

我真的不明白git那麼好,我開始反感甚至試圖使用它。git - 由於合併衝突而陷入無休止的推/拉循環

我試圖把我的項目的一個新版本,以我的遠程存儲庫(git push origin master),但是當我做,我得到的消息:

Error: failed to push some refs to 'myRepo'. Updates where rejected because the tip of your current branch is behind its remote counterpart. Integrate the remote changes (e.g. git pull ...) before pushing again. 

所以我儘量拉(git pull origin master)然後我得到以下錯誤:

Error: The following untracked working tree files would be overwritten by merge: <bunch of image files and a few PHP files> 

什麼我錯在這裏做的,用簡單的英語(以及一些混帳的幫我解決這個問題)?

回答

3
  1. 你不能推,因爲你的本地分支和遠程分支有分歧。在最後一次這兩個分支同步後,您的本地分支和遠程分支也有新的提交。在這種情況下你不能推動,分支需要先被合併。

  2. 拉將試圖進行合併。顯然在遠程分支中添加了新文件,當Git嘗試在工作樹中創建它們時,事實證明文件存在名稱相同。 Git無法確切地知道如何處理現有的文件:它應該刪除它們嗎?它是否應該將傳入的新內容合併到它們中?這是無法猜測的,只有你可以做出這些決定。

要解決此問題,請將這些未跟蹤的文件移開或將它們提交到本地分支。第一個選項對你來說可能更容易:臨時將這些文件移到其他地方。

之後,git pull將工作,除非遠程分支和您的本地分支有一些衝突的變化。我希望這有幫助。

如果您想要刪除未跟蹤的文件,您可以使用git clean命令。與-n標誌,它不會做任何事情首先運行只是告訴你什麼 DO(「空轉」):

git clean -n 

由於@Chris在評論中指出,你可以保存未跟蹤文件隱藏:

git stash -u 

這也將保存所有其他待處理的更改,分階段和非暫存。你可以稍後恢復一切:

git stash pop 
+0

令人驚訝的是,我明白了。我可以看到發生了分歧:「你的分支和'起源/主''分開了,分別有5個不同的提交。我會用什麼命令「將未跟蹤的文件移開」? – ReactingToAngularVues

+0

是否要將它們移動到其他位置(到臨時目錄)或刪除它們? – janos

+0

絕對臨時目錄。我做了一些備份,以防事情變壞。 – ReactingToAngularVues