早些时候,我提交了一些当时似乎是个好主意的代码,但事实上它使事情变得更糟.我想删除历史记录中的更改,因为它没有帮助,并且自那以后重新定义所有提交 - 它们应该合并而没有问题.
我尝试newMaster在错误提交(使用gitx)之前立即创建一个新分支(称为),检查并运行:
git rebase -i master
Run Code Online (Sandbox Code Playgroud)
哪个AFAICS应该给我一个关于master的提交列表以及合并或不合并它们的选项,但是它说noop,并且快速转发newMaster等于master.
做我需要的最简单的方法是什么?
CB *_*ley 29
做你想做的最简单的方法是继续(或重新检查)你想编辑的分支并运行这样的东西.
git rebase --onto <sha1-of-bad-commit>^ <sha1-of-bad-commit>
Run Code Online (Sandbox Code Playgroud)
这会将所有错误提交到错误提交的父级,从而有效地从当前分支的历史记录中删除坏的commiit.当然,如果发生任何冲突,您将需要解决它们.
Bri*_*ell 13
git rebase -i是正确的命令,但是您希望从具有最新更改的分支执行此操作,并传入作为rebase操作的"基础"的修订(在错误提交之前的修订).因此,如果您创建了一个last-good-commit指向最后一个良好提交的分支,您可能希望在运行时运行以下命令master:
git rebase -i last-good-commit
Run Code Online (Sandbox Code Playgroud)
使用rebase,我无法将更改推送到遥控器,并且每次拉动时我的变基都被取消。
我成功地恢复了一个精确的提交(不是最后一个),只需:
git revert <sha-of-bad-commit>
Run Code Online (Sandbox Code Playgroud)
然后我还可以推动遥控器