回答

收藏

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

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

我不小心错误的文件提交给Git,但尚未将提交推送到服务器。
, K9 F/ B* n2 t如何从当地存储库中撤消这些提交
# H* J; o' a: I- e唯一的方法似乎是 GUI 在文本编辑器中复制编辑,擦除整个本地克隆,重新克隆存储库,然后重新应用编辑。6 E* S1 |* }& I- Y
这可能会导致数据丢失。: J( i; p( u3 w* f5 r
只发生事故时,很难做到这一点git commit。
有没有更好的办法?- P' d+ _+ R# X$ j* [( `% U2 d
                                                               
+ ?8 D5 V2 Q( M/ M3 S  x" m    解决方案:                                                                ; G& z9 }) i$ K/ D
                                                                撤销提交和重做
    $ 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)3 B" t# {" |" H' p" m6 |3 T. m
[ol]该命令负责撤消。它将同时取消您的最后一次提交保持您的工作树(磁盘上文件的状态)不变。在再次提交之前,您需要再次添加它们)。" I) a" \- j: ?1 u
更正工作树文件。
" f# ]8 E: S" p% \( J+ ~2 R0 }git add 你想在新提交中包含任何内容。
7 Q) i: D3 f& z4 P/ f提交变更,重用旧提交信息。reset复制旧头.git/ORIG_HEAD;commitwith-c ORIG_HEAD打开一个编辑器,它最初包含旧提交的日志信息,并允许您编辑它。如果您不需要编辑信息,您可以使用它-C选项。[/ol]或者,编辑之前的提交(或者只编辑其提交的信息),commit --amend将当前索引中的更改添加到以前的提交中。7 O9 }9 }6 B1 Q+ a
必须使用已推送到服务器提交的删除(而不是还原)重写历史记录git push origin master --force。( n( ]" k3 \7 Q
以上答案将向您显示git reflog,您可以使用它来确定要还原到的提交的 SHA-1.获得此值后,请使用上述命令序列。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则