首页 > 解决方案 > 在没有变基的情况下添加对 git 上的先前提交的更改

问题描述

假设我的分支中有以下提交:

commit A
commit B
commit C
commit D

我做了一些准备提交的更改,但是我想添加这些更改,commit C因为它们与该提交更相关。

我处理这个问题的方法是做一个临时的 commit git add . && git commit -m 'temp',然后git rebase -i HEAD~4我就可以合并commit temp在一起commit C了。我想知道,有没有办法做到这一点而不必创建临时提交?

标签: git

解决方案


不,您不能像这样修改最后一个提交以外的提交。

原因是在修改提交时,所有后续提交也必须更新。它们基本上将被重新创建,因为它们现在指向一个新的父级。这就是在 rebase 期间发生的事情:正在重写一系列提交。

如果您只想修改最新的提交 (HEAD),则没有将该提交作为其父提交的提交。所以没有需要重写的提交链。在这种情况下,您可以使用git commit --amend. 这会将您必须的任何分阶段更改添加到先前的提交中。修改一个提交基本上就像一个单一提交的变基。

因此,如果不进行变基,您将无法真正完成这项工作。我个人认为交互式变基是最好的方法:它允许您继续提交您的更改,然后您可以重新排序或重新组织您所做的提交以改进历史记录。

您还可以做的是检查您想要更改的提交,修改它,然后在修改后的提交之上以非交互方式重新设置原始分支。但这很容易比交互式变基复杂一些,因为现在您需要处理分支和提交引用。


推荐阅读