当前位置:   article > 正文

git撤销推送(push)至远端仓库的提交(commit)_git撤销已经push到远端的commit

git撤销已经push到远端的commit

前言

在使用 Git 开发管理源代码的时候,我们会遇到这种尴尬情况:刚刚提交和推送一个新的 commit,就发现有个小的 bug 需要 fix。而这个小的 bug 可能就是一行或者几行代码的事儿,在代码管理层面来说,不应作为一个新的 commit

所以我们希望将刚才推送(push)至远端仓库的提交(commit)在保留原有修改的基础上,从远端仓库撤销提交。再将 bug 修复,一并作为新的 commit,重新提交和推送至远端仓库。


1 撤销本地仓库提交

(1) 输入命令,查看提交信息;

git log

可以看到有 3 次提交历史,我们的操作都是基于提交版本号,所以需要记录好 commit 版本号。

这里,假设我们当前的提交是 ①(1ae6528fc3ba06e3d23adbbcc20ab7281fa2a4f0),现在需要回退至提交 ②(47c31999a97a0c05c09c3872b22cbcda01efc432)

(2) 输入命令,撤销本地提交;

git reset --soft 指定commit版本号

git reset --soft "版本号"重置至指定版本的提交。这里我们指定版本号为 ,从而达到撤销 的目的。

参数 soft:保留当前工作区(代码和文件的更改),以便重新提交;
参数 hard:撤销相应工作区的修改,相当于彻底删除提交和代码的更改。

(3) 输入命令,查看本地分支提交;

git log

可以看到,我们本地分支只有 的提交, 已经被删除。

(4) 查看远端分支的提交;

在远端仓库我们看到,还是有 3 次提交。① commit 并没有撤销。

2 撤销远端仓库提交

(1) 输入命令,撤销远端仓库提交;

git push origin stm32 --force

git push origin stm32 --force强制推送当前版本号至远端分支

我们当前版本号是 ,强制推送至远端,以达到撤销版本 的目的。

注意这里需要加参数 --force,否则会推送失败。

(2) 再次查看远端分支提交;

可以看到,① commit 已经删除,剩下

3 重新提交至远端仓库

(1) 修复 bug,添加至暂存区;

  1. // fix bug
  2. git add .

(2) 重新提交;

git commit -m "Repair gpio declaration."

(3) 重新推送至远端分支;

git push origin stm32

(4) 查看远端分支提交;

当前远端分支有 3 次提交,但是 ① commit 的版本号已经变更了。


总结

以上就是撤销推送(push)至远端分支的提交(commit),保留上一次的代码修改,再次修复 bug 后,一并提交和推送至远端。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/447508
推荐阅读
相关标签
  

闽ICP备14008679号