我不小心在本地主分支上运行了gitmergesome_other_branch。我还没有将更改推送给origin master。如何撤消合并?
合并后,git状态显示:
# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.
我如何撤销所有这些提交?
我不小心在本地主分支上运行了gitmergesome_other_branch。我还没有将更改推送给origin master。如何撤消合并?
合并后,git状态显示:
# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.
我如何撤销所有这些提交?
当前回答
如果您正在合并过程中,您可以随时中止它
git merge --abort
其他回答
使用现代Git,您可以:
git merge --abort
旧语法:
git reset --merge
旧学校:
git reset --hard
但实际上,值得注意的是,如果存在merge_HEAD,gitmerge--abort仅等同于git-reset--merge。这可以在Git帮助的merge命令中阅读。
git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.
在失败的合并之后,如果没有merge_HEAD,则可以使用git-reset-mmerge来撤销失败的合并,但不一定使用gitmerge-art来撤销,因此它们不仅是同一事物的新旧语法。
我个人认为git reset-merge在日常工作中更加强大和有用,所以这是我一直使用的方法。
它可以通过多种方式实现。
1) 中止合并
如果您处于错误合并(错误地使用了错误的分支)之间,并且希望避免合并,以便最新返回分支,如下所示:
git merge --abort
2) 将HEAD重置为远程分支
如果您从远程开发分支工作,可以将HEAD重置为远程分支上的最后一次提交,如下所示:
git reset --hard origin/develop
3) 删除当前分支,然后再次从远程存储库签出
考虑到您正在本地repo中开发分支,该分支与远程/开发分支同步,您可以执行以下操作:
git checkout master
##to delete one branch, you need to be on another branch, otherwise you will fall with the branch :)
git branch -D develop
git checkout -b develop origin/develop
暂存gitbranch-d the_local_branchgit checkout-t<远程名称>应用git存储
这对我有用。。!!
假设您的本地主机不领先于源/主机,您应该能够
git reset --hard origin/<branch-name>
因此,假设您在master上执行了此操作,那么您的本地master分支看起来应该与origin/master相同。
回答问题“撤销尚未推送的Git合并”
您可以使用git reset-hard HEAD~1
考虑以下情况,其中有2个分支主功能1:
$ git log --graph --oneline --all
执行Git合并
$ git merge feature-1
$ git log --graph --oneline --all
撤消Git合并
$ git reset --hard HEAD~1
$ git log --graph --oneline --all