2012-08-28 231 views
14

我有2個分支,masternewfeature。當我想合併newfeaturemaster,我用:合併衝突.gitignore

git checkout master 
git merge newfeature 

我得到的錯誤:

Auto-merging .gitignore 
CONFLICT (content): Merge conflict in .gitignore 
Automatic merge failed; fix conflicts and then commit the result. 

我打開了.gitignore,現在看起來像一個好惹的文件的最後部分看像

<<<<<<< HEAD 
public/img/ignore 
======= 
public/img/profiles 
public/blog 
public/recommendation 
>>>>>>> newfeature 

發生了什麼,以及如何來固定的,這樣我可以分支合併爲master

回答

16

您在兩個分支中編輯了.gitignore。現在,git不確定每個副本中的哪些行是正確的,因此它會要求您解決它們。

的線條:

<<<<<<< HEAD 
public/img/ignore 
======= 

是什麼出現在主文件的副本。

而且

======= 
public/img/profiles 
public/blog 
public/recommendation 
>>>>>>> newfeature 
分支newfeature

你應該只需要編輯這個文件,你會喜歡它終於出現

。然後...

git add .gitignore 
git commit 
1

使用git mergetool來解決衝突(或者只是手動修復它;這不是一個特別難解決的問題),然後重新提交。

1

固定在.gitignore文件衝突,添加更新的版本,然後提交:

vim .gitignore 
# assuming you want all 4 lines: simply remove the conflict markers (<<<<<<, ======, and >>>>>) 
git add .gitignore 
git commit 
6

只需編輯.gitignore文件即可解決衝突:

以前

<<<<<<< HEAD 
public/img/ignore 
======= 
public/img/profiles 
public/blog 
public/recommendation 
>>>>>>> newfeature 

public/img/ignore 
public/img/profiles 
public/blog 
public/recommendation 

然後:

git add .gitignore

git commit

自動生成的提交消息應該是apear,接受它(保存&關閉)並完成。

2

發生了什麼事是有一個合併衝突:兩個分支在不同的流中更改文件「在同一時間」。您可以看到其他分支在「新功能」部分中完成的更改以及HEAD部分中的其他部分所做的更改。

你需要做的是編輯該文件,以便它將包含你想要的內容,添加要遵循的內容然後提交。這被稱爲合併提交。

現在,我上面說的是手動合併,「手動」。這可能是最容易理解的。您還可以使用git mergetool命令通過可視化工具(如果已配置)執行此操作,或者使用「git merge」和某種策略來告訴它如何處理衝突。

1

Git的自動合併失敗。這通常發生在嘗試合併分支/推送內容時,不同分支/存儲庫中同一文件同時發生更改。

對分支新特徵上的.gitignore所做的修改與master上的修改相同。 行:<<<<<<< HEAD表示在主行上進行的修改,該行跟在該行後面,而行>>>>>>> newfeature指示對此行前面的newfeature所做的修改。這兩個修改間隔爲=======

您應該手動編輯文件並保留/合併兩部分中的每一部分。然後你應該提交(刪除<<<<HEAD,=====>>>newfeature行後)。