回答

收藏

撤消尚未推送的 Git 合并

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

在我的 master 分支,我在git merge some-other-branch我当地做了一个,但是从来没有把变化推到 origin master。我不想合并,所以我想取消。git status合并后做 a 时,我收到了这条消息:5 h9 g9 m* L' \$ g
# On branch master# Your branch is ahead of 'origin/master' by 4 commits.根据我发现的一些说明,我试着操作
5 `: R0 x" ^# h9 u7 o; Fgit revert HEAD -m 1但现在我收到了这条消息git status:
1 }; j) ?0 t0 i% |# On branch master# Your branch is ahead of 'origin/master' by 5 commits.我不希望我的分支领先于任何数量的提交。我怎样才能回到那一点?
0 ~0 i5 c# C  h( G9 b4 \                                                               
  g% J& m- B, |& H* m$ c0 ~: T0 q0 f* o    解决方案:                                                               
+ D% g* W- M" g! b5 S                                                                在git reflog合并前检查哪个提交?(git reflog将是比 更好的选择git log)。然后您可以使用以下方法重置它:% O' f& Y; f7 E% ~: t$ S3 M5 P
git reset --hard commit_sha还有一种方法:* a- U* q4 j* l- z
git reset --hard HEAD~1它会让你回到 1 次提交。2 K# Y, j; c1 E4 z
请注意,任何修改或未提交/未隐藏的文件都将被重置为未修改状态。为了让他们隐藏更改或检查它们--merge以下选项。
! [# N$ A5 z/ g直接使用:
, H0 E9 k+ }8 r, Z* a& R. ggit reset --hard ORIG_HEAD可能会产生更好的结果,因为它应该保留你的变化。ORIG_HEAD直接指向合并前提交,不用自己找。
! {2 I* ^! e* A) ]- O( U" \另一个提示是使用--mergeswitch 而不是--hard因为它不会不必要地重置文件:
1 U2 I! I2 p9 kgit reset --merge ORIG_HEAD- 合并5 M2 C: c8 h& C) u5 q
重置索引中重置索引并更新     和 HEAD 之间有不同的文件,但保留索引和工作树之间的不同文件(即未添加的更改)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则