回答

收藏

撤消尚未推送的 Git 合并

技术问答 技术问答 287 人阅读 | 0 人回复 | 2023-09-11

在我的 master 分支,我在git merge some-other-branch我当地做了一个,但是从来没有把变化推到 origin master。我不想合并,所以我想取消。git status合并后做 a 时,我收到了这条消息:
5 T' Y7 F7 A0 p# On branch master# Your branch is ahead of 'origin/master' by 4 commits.根据我发现的一些说明,我试着操作( f! d5 g/ N  e. n" _  J
git revert HEAD -m 1但现在我收到了这条消息git status:
, }6 a& _$ \4 \6 [0 [* ^5 h# On branch master# Your branch is ahead of 'origin/master' by 5 commits.我不希望我的分支领先于任何数量的提交。我怎样才能回到那一点?
4 K. C" X9 J$ l/ O0 ^5 k( q                                                                ( \5 ^  ]( A. `, k3 S
    解决方案:                                                                7 i. ~  N' m7 A: o
                                                                在git reflog合并前检查哪个提交?(git reflog将是比 更好的选择git log)。然后您可以使用以下方法重置它:6 i& V! u# s4 W9 |7 N2 K
git reset --hard commit_sha还有一种方法:+ ~3 x2 U/ C# v8 ?1 J
git reset --hard HEAD~1它会让你回到 1 次提交。
; r3 x( u. q2 M请注意,任何修改或未提交/未隐藏的文件都将被重置为未修改状态。为了让他们隐藏更改或检查它们--merge以下选项。
& {+ c. Q7 x5 m" B直接使用:# u  g  ?% p/ _/ w, o: V/ l
git reset --hard ORIG_HEAD可能会产生更好的结果,因为它应该保留你的变化。ORIG_HEAD直接指向合并前提交,不用自己找。
. d' w% I% s2 J' g% h1 s" R$ f" D另一个提示是使用--mergeswitch 而不是--hard因为它不会不必要地重置文件:
- m4 r6 L+ K4 F1 g  g! N7 v! [$ c3 T8 mgit reset --merge ORIG_HEAD- 合并
  ?9 f  h& C, P7 a: k  G  x重置索引中重置索引并更新     和 HEAD 之间有不同的文件,但保留索引和工作树之间的不同文件(即未添加的更改)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则