赞
踩
以前工作中基本是git一个人一个分支开发某一个功能,然后最后合并到主分支,或者一堆人都在一个分支开发,所有功能开发好后合并到主分支。但是今天遇到了一个比较怪的需求,将A分支中我提交的代码合并到B分支。肯定是不可能一点点cv后提交,这个法子提交到明天也弄不完。通过一系列百度最后发现可以使用cherry-pick去实现。下面是使用方法:
1、首先你需要去找到A分支中你想要移动的提交记录的commitID
2、本地切换到你需要移动到的B分支,git checkout B
3、执行git cherry-pick djksajdsajdlsajdk(这个是commitID),这个只是在本地将记录合并到了B分支
4、最后直接提交到远程就可以了,git push origin B
上面就是在项目中遇见乱七八糟问题的解决方案。同时在百度中还学到了另一个批量将A分支中一连串提交合并到B分支中。主要的思想就是通过git rebase来实现这个需求,这个命令我也是通过博客查看的。
总体就是合并后再通过cherry-pick去移动,如果你不想改变原来的分支的提交,你可以去创建一个新的分支来合并,合并新分支后再移动。或者是你想移动分支中中间段的提交,你也可以去创建一个你想要移动的最后一个提交记录的分支进行合并,合并后再移动。
合并远程分支的详细步骤如下:
首先你可以看见这里有三次提交,你需要复制红框中的commitID,然后在idea的终端工具中输入:git rebase -i fe127f2**(复制的commitID)
然后你就会看见: 这里可以看见上面第二次提交和第三提交的记录。按i进入文本编辑模式,将f0c348c前面的pick修改为squash。此处的操作代表将第三次提交合并到第二次提交,这样第二次和第三次提交就和为一个提交了。注意:squash代表将该次提交合并到上面最近的一次提交。
- pick b35d5d9 2
- squash f0c348c 3
- squash f0c312c 4
-
- 这就代表将第3,4次提交合并到第二次。
- --------------------------------------------
- squash b35d5d9 2
- squash f0c348c 3
- pick f0c312c 4
- 这样并不是将2、3次提交合并到第四次,只能从下合并到上面
接下来按esc,:wq保存修改,会提示你写提交信息。
进入编辑模式,然后修改信息如下
保存退出后需要推送到远程。git push -f(需要使用强制提交),接下来就可以看到仓库的提交记录变成了:
然后使用上面的命令去迁移合并出来的commitID就行。
同时rebase还可以去删除远程仓库中已经提交的记录,和上面的步骤相同,唯一不同是将pick修改为drop。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。