回答

收藏

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

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

我不小心错误的文件提交给Git,但尚未将提交推送到服务器。0 a. A4 {1 Z! L) C, B
如何从当地存储库中撤消这些提交( ]' A) V! a$ R& w* w" \- I/ J/ n: \
唯一的方法似乎是 GUI 在文本编辑器中复制编辑,擦除整个本地克隆,重新克隆存储库,然后重新应用编辑。( }* X" ~0 E: |  o2 y
这可能会导致数据丢失。
! ]( u" M5 C, p- G8 K只发生事故时,很难做到这一点git commit。
有没有更好的办法?
1 j% D8 D: |, `. D& D( e; I$ ]                                                               
' H4 g  B2 J1 T' q3 |* l+ U' b( D    解决方案:                                                               
- r, [) j3 P2 E                                                                撤销提交和重做
    $ 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)
    / @+ q' A% h. {! `* J. J4 z
[ol]该命令负责撤消。它将同时取消您的最后一次提交保持您的工作树(磁盘上文件的状态)不变。在再次提交之前,您需要再次添加它们)。# O* n' n+ o# h: {8 d
更正工作树文件。. E) `8 {9 w- s
git add 你想在新提交中包含任何内容。, `; {4 k! n7 c) x7 ^# A
提交变更,重用旧提交信息。reset复制旧头.git/ORIG_HEAD;commitwith-c ORIG_HEAD打开一个编辑器,它最初包含旧提交的日志信息,并允许您编辑它。如果您不需要编辑信息,您可以使用它-C选项。[/ol]或者,编辑之前的提交(或者只编辑其提交的信息),commit --amend将当前索引中的更改添加到以前的提交中。
. M' [. o  l; [8 p" L必须使用已推送到服务器提交的删除(而不是还原)重写历史记录git push origin master --force。
$ I8 ^% v5 L6 b, K, I8 ~$ b+ j以上答案将向您显示git reflog,您可以使用它来确定要还原到的提交的 SHA-1.获得此值后,请使用上述命令序列。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则