用git合併分支時,如何保持某些文件不被合併

使用git做爲版本控制工具備半年多了。目前仍是在邊學邊用的階段,由於git這東西內容實在是太多了,學習路線比較陡峭,並且學習過程中時不時會冒出一些特別有意思的小tips讓你十分的驚喜。所以,朋友們,若是你尚未使用git,那麼如今當即使用起來吧,即便你如今對他毫無瞭解,由於git將會給你的開發帶去無窮多的幫助,固然其入門也比較容易的。git

最近在使用git時出現了這樣一個場景:咱們一個產品分兩條線,兩個小組各自開發各自的模塊,最後統一發版。可是呢,因爲鄙人負責的模塊需求比較多,工期也少,人手嘛,只有鄙人一個(真不是在找藉口,雖然另一個組有三我的。。),所以,在開發上落後於另外一組較多。爲了保證其餘小夥伴順利進行下個版本迭代,我在master上開了個分支來開發當前版本,他們在master上開發下一版本。等我終於開發完成後呢,面臨這樣一個問題:其餘小夥伴在master上修改了幾個重要的文件,對產品來講是個較大的改動,所以我把分支merge回master時必須保持這幾個文件不會被合併,不然將面臨一大坨使人髮指的衝突,而且解決衝突也容易出各類各樣的問題。這時候怎麼辦呢?感謝偉大的互聯網,讓我找到一個完美的解決方案。原帖地址先貼出來,你們膜拜一下,若是能看懂英文,請直接移步該帖,不然,就聽小弟勉強翻譯一下吧。。。重在表達思想,本人英文水平也不足以一字一句的翻譯出來。json

原帖地址:點擊打開連接工具

大意是說,git在merge分支時,有一個默認的merge驅動,這個驅動會去檢查每一個文件的每一行,若是按照必定規則發現兩個分支的同一個文件有不一樣,那麼認爲兩個分支都對這個文件作了修改,會merge兩個文件,此時有可能產生衝突;那麼若是咱們自定義一個merge驅動,在裏面定義一些不會被檢查的文件,那git就會直接跳過這些文件,所以就不會merge啦。學習

步驟大概是這個樣子滴:翻譯

1:建立咱們的自定義merge driver:版本控制

 

git config --global merge.ours.driver true

2:在要被merge的分支上建立.gitattributes 文件,而且在文件中置頂不merge的文件名:code

 

 
  1. echo 'email.json merge=ours' >> .gitattributesip

  2. git add .gitattributesci

  3. git commit -m 'chore: Preserve email.json during merges'開發

3:回到要合併到的分支(注意形容詞)執行merge:

 

 
  1. (newbranch) $ git checkout master

  2. (master) $ git merge newbranch

  3. Auto-merging ...

  4. Merge made by the 'recursive' strategy.

  5. demo-shared | 1 +

  6. 1 file changed, 1 insertion(+)

通過以上步驟,咱們指定的email.json就不會被合併咯

相關文章
相關標籤/搜索