作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在 Git 中,如果您对 rebase 不满意,该如何回滚?
Git 没有 rebase 试运行。如果我做了一个 rebase 但还没有推送它,我该如何回滚到以前,就好像它从未发生过一样?
最佳答案
您可以使用 reflog在 rebase 开始之前找到第一个 Action ,然后重置 --hard 回到它。例如
$ git reflog
b710729 HEAD@{0}: rebase: some commit
5ad7c1c HEAD@{1}: rebase: another commit
deafcbf HEAD@{2}: checkout: moving from master to my-branch
...
$ git reset HEAD@{2} --hard
现在你应该回到 rebase 开始之前。
要找到正确的重置位置,您只需选择最接近顶部且不以“rebase”开头的条目。
更新:如评论和其他答案中所述,您还可以使用 ORIG_HEAD
作为查找重置位置的更简单方法:git reset ORIG_HEAD --hard
如果 rebase 是您在分支上所做的唯一,即您没有未推送的提交/更改 - 那么您可以使用 git branch -D< 删除本地分支
然后再次检查:
$ git checkout my-branch
$ git rebase master
// not happy with the result
$ git checkout master
$ git branch -D my-branch
$ git checkout my-branch
或者为了达到相同的效果,您可以将 --hard 重置为原始分支:
$ git reset --hard origin/my-branch
如果您在有其他未推送的提交时执行此操作,那么您将丢失它们。在这种情况下,只需使用上面的 reflog 方法跳回到您进行提交的 reflog 条目。
关于Git 如何回滚 rebase ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41049711/
我是一名优秀的程序员,十分优秀!