将更改添加到git上的先前提交而无需重新设置

时间:2018-07-12 08:49:23

标签: git

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

commit A
commit B
commit C
commit D

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

我处理此问题的方法是先进行临时提交git add . && git commit -m 'temp',然后进行git rebase -i HEAD~4,在其中我可以将commit tempcommit C合并在一起。我想知道,有没有一种方法可以不必创建临时提交?

1 个答案:

答案 0 :(得分:1)

否,除了最后一次提交,您不能修改其他提交。

原因是在修改提交时,所有随后的提交也必须更新。由于它们现在指向新的父级,因此将基本上重新创建它们。这是在重新设置期间发生的情况:正在重写提交链。

如果您只想修改最新的提交(HEAD),那么将没有以该提交作为其父提交的提交。因此,没有需要重写的提交链。在这种情况下,您可以使用git commit --amend 修改提交。这会将您已进行的任何分阶段更改添加到上一次提交。修改提交基本上就像是为单个提交重新设置基础。

因此,如果不重新定基础,就无法真正完成此任务。我个人要说的是,交互式重新基准是实现此目的的最佳方法:它允许您继续提交更改,然后在以后可以重新排序或重新组织为改善历史记录所做的提交。

您还可以执行的操作是签出要更改的提交,对其进行修改,然后在修改后的提交之上以非交互方式重新建立原始分支。但这要比交互式重定基准容易得多,因为现在您需要照顾分支并提交引用。