Git 合併指定檔案或資料夾

喂喂喂不要這樣發表於2018-04-25

背景

  1. work_portal工程下,master、demo、release、develop分支各自發展,他們各有不同的想法;

  2. 基於master生成的開發分支daily/1.0.0,合併至develop或release等分支進行想要測試時,出現超多衝突,而自己開發的地方只涉及幾個檔案或資料夾;

訴求

  1. 把自己的改動的檔案合併到目標分支並在Jenkins構建;

  2. 不想改那些不屬於自己開發時出現的衝突;

操作

基於master的開發分支daily/1.0.0,要合併至develop分支,然後Jenkins構建

  1. 所有改動都已提交,保持分支的乾淨狀態(working tree clean)

  2. 切換至develop分支,並保持develop為最新

git checkout develop    
git pull
複製程式碼

3、基於develop分支新建一個temp分支,並切換到該分支上

git checkout -b develop_temp
複製程式碼

4、用daily/1.0.0指定檔案或資料夾替換develop_temp的相應檔案

git checkout daily/1.0.0 <目標資料夾或目標檔名>
複製程式碼
  • 如果此次開發只涉及src/routes/test資料夾下的檔案,則執行
git checkout daily/1.0.0 src/routes/test
複製程式碼

執行完此命令後,daily/1.0.0分支的src/routes/test下的檔案會替換develop_temp分支下相應的檔案

5、將本次checkout內容提交到develop_temp上

git commit -am“提交資訊”
複製程式碼

6、切換至develop分支

git checkout develop
複製程式碼

7、合併

git merge develop_temp
複製程式碼

如有衝突,也僅會是src/routes/test下的衝突

至此,合併指定檔案或資料夾操作結束

參考

git小技巧--如何從其他分支merge個別檔案或資料夾

p.s.

參考文章中是直接在develop上checkout daily/1.0.0裡的指定資料夾。由於checkout是直接替換,這樣做可能會丟失別人對這些資料夾下檔案的改動記錄,所以我增加了一個develop_temp。

相關文章