Git和合并提交
我有几个提交,其中一些与类似的任务有关,例如:Git和合并提交,git,Git,我有几个提交,其中一些与类似的任务有关,例如: 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”,但出于某种原因,它没有(或我误解了它……)发挥作用。首先,要弄清楚术语: 不能合并提交,只
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”,但出于某种原因,它没有(或我误解了它……)发挥作用。首先,要弄清楚术语: 不能合并提交,只能合并分支 如果您有一个名为dev的分支,并且希望在主分支中有一些(而不是全部)提交,则必须使用cherry picking。 这意味着,您需要从dev分支向主分支进行一些提交 对于该检查,请使用master
git cherry-pick <commit>
git樱桃采摘
要进一步阅读,请参阅git rebase是一个非常强大的工具,因此在使用它时要小心通常,对共享提交(即您推送到GitHub或以其他方式与协作者共享的提交)重新设置基础不是一个好主意。 下面是如何使用
rebase-i
重新安排提交,假设提交从最早的底部到最新的顶部:
git-rebase-i头~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
squash
的文件压缩到上一次提交中
这可能会导致冲突,但如果不同的任务很好地分开,它们就不应该是非常复杂的任务。只要像平常一样解决这些冲突。Git将提示您如何执行此操作是一个有用的参考。@zerkms所有的提交都在我的分支上,cp有什么帮助?你可以将它们提取到一个新的位置,挤压(使用rebase),然后做任何你想做的事情。