1

这对我来说是一个常见的问题。我做了五次左右的提交,然后发现一些变得无关紧要的调试代码或来自先前使用的算法的垃圾代码仍然存在。将它们修改为 HEAD 并不总是有意义的,并且为单行后期更改做出新的提交会让人感到无序。

我知道的解决方案包括上述内容并再次检查以前的提交、分支、编辑和合并。这很好用,但我想知道是否存在更惯用或更优雅的解决方案。

4

2 回答 2

2

您可以使用交互式变基返回并编辑特定的提交,只要重写历史是可以的(基本上,只要您没有与其他任何人/公众共享提交)。

为此,首先找到要编辑的提交的哈希。然后,告诉 Git 从之前的提交中进行交互式变基:

git rebase -i <SHA>~1

~1很重要 - 它告诉 Git 在您指定的 SHA 之前引用提交。

这将打开一个编辑器,其中包含从您要编辑的提交开始的每个提交。将该提交更改pickedit,然后保存并退出编辑器。

Git 将应用该提交,然后暂停。然后,您可以编辑文件以删除调试代码,git add然后git commit --amend编辑提交。

之后,使用git rebase --continue按顺序应用其他提交,最终回到您开始的位置(但使用一组没有您的调试代码的新提交)。

于 2012-07-05T01:45:23.680 回答
1

如果您还没有推送或拉出,您可以使用 rebase。

用 rebase 压扁

于 2012-07-05T01:37:30.453 回答