源代码树-如何还原推送的提交

问题描述

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

enter image description here

是否有任何方法可以还原它,例如取消上一次提交而不创建新历史记录?
我正在使用源代码

解决方法

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


由于您在回购协议上独自工作而没有阻止权限的计划,因此您唯一的问题是在上次推送之前找出是哪个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

...您将被设置为本地和远程。