You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

本地提交代码后如何撤销变更且不影响已暂存更改?

嘿,这两个Git场景在日常开发里太常见了,我给你把每个操作讲得明明白白:

1. 本地提交代码后,如何撤销代码变更(丢弃提交内容)

如果你已经做了本地提交,但想彻底撤销这次提交,把代码完全回到提交前的状态,直接用这个命令:

git reset --hard HEAD^
  • HEAD^ 代表上一个提交,如果要撤销最近n次提交,就改成 HEAD~n(比如HEAD~2就是撤销最近2次)
  • 这个命令会把HEAD指针、暂存区、工作区全部回退到目标提交的状态,这次提交的所有变更都会被彻底丢弃,而且不可逆,执行前一定要确认自己真的不需要这些变更了!
2. 本地提交代码后,撤销代码变更且不影响当前已存在的暂存更改

这里分两种常见情况,我都给你列出来:

情况A:想撤销提交,但保留提交的变更(同时不碰现有暂存内容)

如果你只是想取消这次commit操作,把提交的内容放回暂存区,同时保留当前已经暂存的其他更改,用这个命令:

git reset --soft HEAD^
  • --soft 参数只会移动HEAD指针回退到上一个提交,暂存区和工作区的内容完全不变——原来提交的内容会回到暂存区,和你之前已经暂存的内容合并在一起,之后你可以重新整理提交。

情况B:想彻底丢弃提交的变更,但保留当前已暂存的内容

如果你要完全删掉这次提交的变更,但不想丢失自己已经暂存的其他修改,步骤如下:

  1. 先把当前暂存的内容临时存起来:
git stash push -m "临时保存暂存内容"
  1. 然后彻底撤销提交,丢弃提交的变更:
git reset --hard HEAD^
  1. 最后恢复刚才保存的暂存内容:
git stash pop

这样操作后,提交的变更被完全清除,你之前暂存的内容会回到工作区(如果要放回暂存区,再执行git add .即可)。

内容的提问来源于stack exchange,提问作者user9469186

火山引擎 最新活动