git 撤销推送

使用 git 的时候经常会出现一个问题,那就是不小心提交了一个错误的版本,这个时候该怎么办呢?那当然是撤销了,那该怎么撤销呢?

提交未推送到远程仓库撤回

如果你已经添加文件,并且已经提交了,命令如下:

git add .
git commit -m "change something"

这个时候一切都还在自己的电脑中,一切都很好修改。这时通过查找结点,然后倒退回去就可以了,如下:

$ git log
commit 36e4a4a744... (HEAD -> dev)
Author: a 
Date:   Sun Jun 30 11:44:50 2019 +0800

    change readme

commit 69e996ed43ded...
Author: a 
Date:   Sun Jun 30 10:55:06 2019 +0800

    change jvmargs

commit 9572301...
Author: a 
Date:   Fri Jun 28 00:31:53 2019 +0800

    添加资源文件

加入我们要倒退回中间的结点,也就是 change jvmargs 这个结点,那么输入以下命令:

git reset --soft 69e996ed43ded...

这样我们就把推送的东西倒退回来了,这时就可以重新修改再提交了。

注意事项

倒退有两种方法:

git reset --soft 
git reset --hard

但是请注意,使用 --soft 的话,仅仅只是把提交信息给倒退回来。但使用 --hard 的话,会把版本信息也倒退回来的。

以上面的提交日志为例:

  1. 原本项目中有一个 hello.txt 文件,然后你在 change readme 那个提交中增加了一个 world.txt 文件,并且修改了 hello.txt 内容
  2. 然后提交后发现提交时的注释不对不对,于是撤回修改
  3. 这时使用 git reset --hard 69e996ed43ded 命令
  4. 结果发现 hello.txt 修改的内容没有了,world.txt 文件也不见了

当然,如果使用 git reset --soft 则不会

使用 --hard 惨痛案例 https://www.cnblogs.com/hope-markup/p/6683522.html

提交并推送远程仓库撤回

如果已经推送了远程仓库,前几步还是如上面所说的一致。就是推送的时候要添加 -f 来强制更新,清除前面的推送信息,如下:

#如强制撤销并推送至 master 主分支
git push -f
# 或者使用
git push origin master --force

#如强制撤销并推送至 dev 开发分支
git push -f --set-upstream origin dev

Git的4个阶段的撤销更改
http://www.cocoachina.com/articles/21453

手把手带你玩git之各种撤销
https://www.jianshu.com/p/8c22572b84bb

你可能感兴趣的:(git 撤销推送)