编辑提交时查看所有更改

时间:2018-12-03 08:31:09

标签: git

我的首席技术人员今天要求我从分支机构中删除所有测试。我有4个提交,每个提交包含测试。我不想进行额外的提交,以从其中删除所有测试,因为在我看来,这看起来很混乱。

相反,我想编辑现有的提交。我可以做git commit --interactive并用edit标记提交,但我无法有选择地选择我要丢弃的块。为此,我尝试了git reset --soft HEAD~并仅保留我想要的更改(例如,能够使用git reset)。但是,当我执行此操作,然后git rebase --continue时,git告诉我,即使没有,我也已撤消了更改。

在历史记录中编辑git commit时,是否有办法将所有更改恢复到索引中?

编辑:

  

@jonrsharpe   是否没有多余的提交说明为什么删除测试更好地记录了实际发生的情况?

可能是的,但是即使最终由我决定,我还是希望使用git工具删除测试,而不是手动编辑文件。那将需要查看索引中4次提交的更改。

1 个答案:

答案 0 :(得分:1)

这听起来像您的领先技术提出的怪异请求,但是如果不进行那个讨论,那么,如果您的提交只是添加测试而以后的提交却不对其进行更改,那么这实际上应该很容易

您进行交互式变基来编辑提交的策略听起来不错。

编辑提交的过程类似于:

git reset --soft HEAD^
git add -i <files>  # assuming your test code is in files that have other changes
git commit
git reset --hard

我怀疑您最后缺少硬重置。

进行软重置后,您将处于上一次提交,但是具有您正在编辑的提交中的所有更改。交互式添加文件将使您能够提交与工作副本中的文件不完全对应的内容。提交完之后,您仍处于工作副本中对您选择不提交的原始提交所做的更改中,并且您需要摆脱这些更改以使git继续进行重新设置。

进行硬重置将更改您的工作副本,使其与您要重置的提交匹配,从而丢弃所有本地更改;在这种情况下,使您的工作副本与您刚提交的副本匹配。

如果您的测试位于单独的文件中,则编辑步骤会更容易,只是:

git rm <test files>
git commit --amend

然后继续您的变基。