问题描述
我有2个远程分支,分别是dev和master。
我总是在dev分支中进行开发,并将更改合并到master分支中。
但是我发现我不小心使用了master分支进行开发,然后提交并推送到远程。
是否有任何方法可以还原它,例如取消上一次提交而不创建新历史记录?
我正在使用源代码树
解决方法
(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
...您将被设置为本地和远程。