首页 > 解决方案 > 源树 - 如何恢复推送的提交

问题描述

我有 2 个远程分支,分别是 dev 和 master。
我总是在 dev 分支中开发并将更改合并到 master 分支。
但是我发现我不小心使用 master 分支进行开发,然后提交并推送到远程。

在此处输入图像描述

有什么办法可以恢复它,比如取消最后一次提交而不创建新的历史记录?
我正在使用源代码树

标签: gitversion-controlatlassian-sourcetree

解决方案


(CLI 解决方案 - 但仍然欢迎使用 SourceTree 解决方案)


由于您在 repo 上单独工作而没有银行权限方案阻止您推送,因此您唯一的问题是找到master上次推送之前的提交。

git log --oneline master如果您只是提交了几次,您可以简单地从您的输出中找到这一点。从 中找到最后一个合并dev,注意提交哈希,我们称之为<oldMasterHash>

然后就做

# move dev where master is now
git checkout -B dev master
git push

# now let's "repair" master
git checkout master
git reset --hard <oldMasterHash>
# here we'll need --force to push since this is a history rewrite
git push --force

...您将在本地和远程都准备就绪。


推荐阅读