场景
将u1分支的17笔change合成一笔应用到分支u2上
实现方法
# 1. 将分支u1上第一笔和最后一笔之间的提交有差异的地方打成一个patch文件
git diff commit_A commit_B > my_patch # my_patch 代表patch名称
# 此命令之后会在当前仓生成 my_patch 文件
# 2. 应用这个patch到目标分支u2上
# 2.1 先检查下这个patch能否应用,如果这个命令执行后没有任何输出,则表示能顺利接受这个补丁
git apply --check my_patch
# 2.2 应用这个patch
git apply patch
# 2.3 如果 --check 命令之后显示有冲突,使用
git apply --reject patch
# 该命令将能打的补丁先打上,有冲突的会生成.rej文件,此时可以找到这些文件进行手动打补丁
坑
如果我们要打第1笔和第17提交之间的差异,如:
commit 17
xxxx
commit 16
xxxx
...
...
commit 1
xxxx
commit 1^
实际上我们应该打的patch是commit 1^ 到 commit 17, 也即:
git diff commit1^ commit 17 > my_patch
也就是比第一笔再往前一笔