这对我来说是个常见问题。我做了五个左右的提交然后发现一些变得无关的调试代码或来自先前使用的算法的垃圾代码保持不变。将它们修改为HEAD并不总是有意义的,并且为一线后期改变做出新的承诺感觉无序。
我所知道的解决方案包括上述内容,并再次检查先前的提交,分支,编辑和合并。这很好,但我想知道是否存在更惯用或更优雅的解决方案。
答案 0 :(得分:2)
只要重写历史记录正常(基本上,只要您没有与其他任何人/公众共享提交),您就可以使用交互式rebase返回并编辑特定提交。
为此,首先找到要编辑的提交的哈希值。然后,告诉Git在之前的提交中执行交互式rebase:
git rebase -i <SHA>~1
~1
很重要 - 它告诉Git在你指定的SHA之前引用提交。
这将打开一个编辑器,其中包含您要编辑的每个提交的行。将该提交的pick
更改为edit
,然后保存并退出编辑器。
Git将应用该提交,然后暂停。然后,您可以编辑文件以删除调试代码git add
,以及git commit --amend
以编辑提交。
然后,使用git rebase --continue
按顺序应用其他提交,最后返回到您开始的位置(但是使用一组没有调试代码的新提交)。
答案 1 :(得分:1)
如果您还没有推出或已经退出,您可以使用rebase。