Git 合并指定文件或文件夹

17,717 阅读1分钟

背景

  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。