回答

收藏

如何撤消 Git 中最近的本地提交?

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

我不小心错误的文件提交给Git,但尚未将提交推送到服务器。( M1 b7 F$ G' W$ A4 U
如何从当地存储库中撤消这些提交
7 k+ C4 q+ e, g  _+ }唯一的方法似乎是 GUI 在文本编辑器中复制编辑,擦除整个本地克隆,重新克隆存储库,然后重新应用编辑。( h  ?# u, U5 H4 I  m0 }
这可能会导致数据丢失。# t! I. ~, L7 e0 Y+ I
只发生事故时,很难做到这一点git commit。
有没有更好的办法?" r* Q& u* ^$ |8 C
                                                               
3 U" [6 @& w9 R# M, E4 _9 b    解决方案:                                                                9 w$ d; p% }3 M- {8 m# G6 j- ]% C
                                                                撤销提交和重做
    $ git commit -m "Something terribly misguided" # (0: Your Accident)$ git reset HEAD~                              # (1)[ edit files as necessary                   # (2)$ git add .                                    # (3)$ git commit -c ORIG_HEAD                      # (4)
    " Y4 K% n/ C7 Y- u% J5 E, G( `$ c
[ol]该命令负责撤消。它将同时取消您的最后一次提交保持您的工作树(磁盘上文件的状态)不变。在再次提交之前,您需要再次添加它们)。
4 O# \. k7 u' \更正工作树文件。' K- e# v. k& k7 \0 Y- Q( e
git add 你想在新提交中包含任何内容。. b, J3 s3 J) N4 Y$ f
提交变更,重用旧提交信息。reset复制旧头.git/ORIG_HEAD;commitwith-c ORIG_HEAD打开一个编辑器,它最初包含旧提交的日志信息,并允许您编辑它。如果您不需要编辑信息,您可以使用它-C选项。[/ol]或者,编辑之前的提交(或者只编辑其提交的信息),commit --amend将当前索引中的更改添加到以前的提交中。& p+ p6 a- z1 z
必须使用已推送到服务器提交的删除(而不是还原)重写历史记录git push origin master --force。
  c# F1 \4 z0 a: J/ B以上答案将向您显示git reflog,您可以使用它来确定要还原到的提交的 SHA-1.获得此值后,请使用上述命令序列。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则