關於git merge Google上有詳細的概念,CSDN上也有一個博客說的很清楚,但是csdn的那個博客有些需要注意的坑說的不具體,於是坑了我1.5個小時。
首先git merge大致是這樣的邏輯(可以去看英文原文):git在merge分支時,有一個默認的merge驅動,這個驅動會去檢查每個文件的每一行,如果按照一定規則發現兩個分支的同一個文件有不同,那么認為兩個分支都對這個文件做了修改,會merge兩個文件,此時有可能產生沖突;那么如果我們自定義一個merge驅動,在里面定義一些不會被檢查的文件,那git就會直接跳過這些文件,因此就不會merge,而我們自定義的這個merge驅動就是 ours。
如圖:
步驟如下:
1:創建我們的自定義merge driver:
git config --global merge.ours.driver true
這樣選定了ours驅動,至於為什么不選擇其它驅動,可以詳看官方文檔。PS:我也沒細看。
2:在要被merge的分支上創建.gitattributes 文件,並且在文件中置頂不merge的文件名:
echo 'index.php merge=ours' >> .gitattributes git add .gitattributes git commit -m 'chore: Preserve index.php during merges' //只是為了commit代碼,可以
.gitattributes文件內容如下:
index.php merge=ours
3:在合並的時候選擇驅動要選擇ours,這樣就可以了。
如果是命令行合並:
(newbranch) $ git checkout master (master) $ git merge newbranch Auto-merging ... Merge made by the 'recursive' strategy. demo-shared | 1 + 1 file changed, 1 insertion(+)
from : http://www.voidcn.com/article/p-aohzmust-c.html