我有几个提交,其中一些与类似的任务相关,例如:
eedf6b3 Task A (Continue)
12364e5 Task D
da77ed3 Task C
9e1991a Taks B (Continue)
cb345c1 Task A (Continue)
83b1c27 Task B
9b3c83c Task A
我想将类似的任务合并到一个带有新评论的单个任务中。 我遇到了'git rebase -i',但由于某种原因它没有(或者我误解了它......)做了伎俩。
答案 0 :(得分:4)
git rebase
是一个非常强大的工具,因此在使用它时要小心。 rebase
共享提交通常不是一个好主意(即您已推送到GitHub,或以其他方式与协作者共享)。
以下是使用rebase -i
重新安排提交的方法,假设它们从最底层的最旧版本到顶部的最新版本:
git rebase -i HEAD~7
这将把你转移到你的默认文本编辑器中,缓冲区包含这样的内容:
pick 9b3c83c Task A
pick 83b1c27 Task B
pick cb345c1 Task A (Continue)
pick 9e1991a Taks B (Continue)
pick da77ed3 Task C
pick 12364e5 Task D
pick eedf6b3 Task A (Continue)
首先,修改缓冲区,使提交符合您想要的顺序。也就是说,剪切并粘贴,直到你得到类似的东西:
pick 9b3c83c Task A
pick cb345c1 Task A (Continue)
pick eedf6b3 Task A (Continue)
pick 83b1c27 Task B
pick 9e1991a Taks B (Continue)
pick da77ed3 Task C
pick 12364e5 Task D
现在,将之前提交的提交从pick
更改为squash
:
pick 9b3c83c Task A
squash cb345c1 Task A (Continue)
squash eedf6b3 Task A (Continue)
pick 83b1c27 Task B
squash 9e1991a Taks B (Continue)
pick da77ed3 Task C
pick 12364e5 Task D
一旦您对所拥有的内容感到满意,请保存文件并退出编辑器。 Git将查看您保存的文件并重新排序提交,将标记为squash
的文件压缩到上一次提交中。
这可能会导致冲突,但如果不同的任务分开,则不应该是非常复杂的任务。正常解决这些冲突。如果出现,Git会提示你如何做到这一点。
Changing Multiple Commit Messages section of Pro Git是一个有用的参考。
答案 1 :(得分:0)
首先,要明确术语:
您无法合并提交,只能合并分支。
如果您有一个名为dev的分支,并且您希望在主分支中有一些(不是全部)提交,则必须使用cherry-picking。 这意味着,您可以从开发分支到主分支进行一些提交。
对于那个签出大师,然后使用
git cherry-pick <commit>
如需进一步阅读,请参阅manpage of git cherry-pick