我在同一个分支上有两个提交,一个接一个。我将对文件A的更改添加到第一次提交,然后我对其他文件进行了一些更改,然后进行了另一次提交。现在我希望文件A的更改在第二次提交而不是第一次提交。什么是最优雅的方式?
我在同一个分支上有两个提交,一个接一个。我将对文件A的更改添加到第一次提交,然后我对其他文件进行了一些更改,然后进行了另一次提交。现在我希望文件A的更改在第二次提交而不是第一次提交。什么是最优雅的方式?
如果它们是小型提交,并且git中的提交总是很小,那么最简单的方法就是 git reset HEAD^^
然后再做一次。请注意,任何解决方案都涉及重写历史记录,如果您已经将这些提交推送到某个地方,除非您知道自己在做什么,否则不应该这样做。
相关的答案,但基本上你Squash和Rebase。
在刚刚创建这些提交的事件中,可能不太可能,撤消第二次提交 git reset HEAD^
然后将更改添加到第一次提交 git commit --amend
。
在更有可能的事件中,您已经过去并且提交在过去的某个时刻,变基是您的最佳选择。在不知道您的确切情况的情况下,引用一个解释得很好的参考可能是最好的。
在第一次和第二次活动中,Pro Git书中关于重写历史的部分很好地解释了这些选项 - 无论何时应该使用它们以及何时应该谨慎使用。
这个问题的另一个解决方案
git rebase -i <commit before commits to be reordered>
(git rebase -i master
在多数情况下)ddp
在应该向下移动的线上)