0


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,添加至暂存区;

// fix bug
git add .

(2) 重新提交;

git commit -m "Repair gpio declaration."

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

git push origin stm32

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

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


总结

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


本文转载自: https://blog.csdn.net/qq_20016593/article/details/127806990
版权归原作者 EmotionFlying 所有, 如有侵权,请联系我们删除。

“git撤销推送(push)至远端仓库的提交(commit)”的评论:

还没有评论