在我的 master 分支中,我在git merge some-other-branch本地做了一个,但从未将更改推送到 origin master。我不是想合并,所以我想撤消它。git status在我合并后做 a 时,我收到了这条消息:
git merge some-other-branch
git status
# On branch master # Your branch is ahead of 'origin/master' by 4 commits.
根据我发现的一些说明,我尝试运行
git revert HEAD -m 1
但现在我收到这条消息git status:
# On branch master # Your branch is ahead of 'origin/master' by 5 commits.
我不希望我的分支领先于任何数量的提交。我如何回到那个点?
在git reflog合并之前检查哪个提交是一个提交(git reflog将是比 更好的选择git log)。然后您可以使用以下方法重置它:
git reflog
git log
git reset --hard commit_sha
还有一种方法:
git reset --hard HEAD~1
它会让你回到 1 次提交。
请注意,任何已修改和未提交/未隐藏的文件都将重置为其未修改状态。为了让他们隐藏更改或查看--merge下面的选项。
--merge
在这种直接情况下使用:
git reset --hard ORIG_HEAD
可能会产生更好的结果,因为它应该保留您的更改。ORIG_HEAD将在合并发生之前直接指向提交,因此您不必自己寻找它。
ORIG_HEAD
另一个提示是使用--mergeswitch 而不是--hard因为它不会不必要地重置文件:
--hard
git reset --merge ORIG_HEAD
- 合并 重置索引并更新工作树中 和 HEAD 之间不同的文件,但保留索引和工作树之间不同的文件(即具有尚未添加的更改)。
- 合并
重置索引并更新工作树中 和 HEAD 之间不同的文件,但保留索引和工作树之间不同的文件(即具有尚未添加的更改)。