Git 撤销push的commit操作

问题:

我在Git中提交了错误的文件。我该如何撤销那一次commit呢?

原问题地址:
How do I undo the most recent local commits in Git?

对于未push到origin的情况:

解决办法:

$ git commit -m "Something terribly misguided"              (1)
$ git reset HEAD~                                           (2)
<< edit files as necessary >>                               (3)
$ git add ...                                               (4)
$ git commit -c ORIG_HEAD                                   (5)
  • 1、这是你想撤销的那步操作
  • 2、这一步不会让你的工作区(你磁盘上文件的状态)发生改变,但是会撤销上次的commit,并且将你第一步commit的那些改动从暂存区移除(所以当你再次使用 git status 查看状态的时候,它们会出现在‘Changes not staged for commit’这句话的下面。提交他们之前,你需要再把它们add一次)。如果你只想为之前的 commit 增加更多的改动,或者改变之前的提交信息,你应该使用 git reset --soft HEAD~ ,和 git reset HEAD~ 有些类似,但是会将你的改动保留在暂存区内。
  • 3、纠正工作区的文件。
  • 4、使用git add将你想提交的文件添加进去。
  • 5、提交这些变动,并使用旧的 commit 信息。 reset 命令会将老的head复制到 .git/ORIG_HEAD 中保存; commit 和 -c ORIG_HEAD 一起使用将会打开一个编辑器,里面包含着旧的提交所产生的日志信息,你可以对它们进行编辑。如果你不需要编辑的话,可以使用 -C 选项。

提示:假如你只是提交信息弄错了,你不需要重置到一个早期的提交点上。更简单的方式是使用git reset(将那些改变移出暂存区),然后再使用git commit --amend,这将会打开你的默认的提交信息编辑器,然后将默认设定为最近一次的提交信息。

但是,如果此时你在索引中添加了任何新的改动,使用commit --amend将会带着它们一起添加到上一次的提交中去。

对于已push到origin的情况:

git reset --hard <你想回退到的commitId>

当前分支的版本低于远程分支的版本,所以要想覆盖掉它,必须使用force

git push origin <分支> --force

本文转载自:
https://www.jianshu.com/p/9f11d398111f
https://blog.csdn.net/guozhaohui628/article/details/78922946
转载请注明出处

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值