【轉】git 分支合並時如何忽略某個文件


關於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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM