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

简介: git撤销推送(push)至远端仓库的提交(commit)

前言

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

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

1 撤销本地仓库提交

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

git log

b68b3ef6a7b64d8f9cbdd1ffe68fae60.png

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

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

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

git reset --soft 指定commit版本号

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

参数 soft:保留当前工作区(代码和文件的更改),以便重新提交;

参数 hard:撤销相应工作区的修改,相当于彻底删除提交和代码的更改。

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

git log



d7aa6d7366e14fe0814e3d7cf1994787.png

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

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


6b9da73bff364c7a80af0eec16c80a4e.png

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

2 撤销远端仓库提交

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

git push origin stm32 --force

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

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

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

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


51f23de8a1d448ebbfb3e8973965a986.png

可以看到,① commit 已经删除,剩下 ② 和 ③。

3 重新提交至远端仓库

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

1. // fix bug
2. git add .

(2) 重新提交;

git commit -m "Repair gpio declaration."

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

git push origin stm32

0589324f95da41468d9fa357e8669647.png

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

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

总结

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


相关文章
|
2月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
65 2
|
3月前
|
Shell 开发工具 git
git学习三:git使用:删除仓库,删除仓库内文件
通过GitHub的设置页面删除仓库,以及如何使用Git命令行删除仓库中的文件或文件夹。
188 1
git学习三:git使用:删除仓库,删除仓库内文件
|
2月前
|
网络安全 开发工具 git
解决fatal:remote error:You can’t push to git://github.com/username/*.g
通过上述诊断与修复步骤,绝大多数的推送错误都能得到有效解决,确保您的Git工作流顺畅无阻。
110 1
|
3月前
|
开发工具 git 索引
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
106 4
|
3月前
|
网络协议 网络安全 开发工具
【Git快速入门】Git代码管理手册与协同开发之远程仓库(四)
【Git快速入门】Git代码管理手册与协同开发之远程仓库(四)
|
3月前
|
前端开发 开发工具 git
搭建Registry&Harbor私有仓库、Dockerfile(八)+前端一些好学好用的代码规范-git hook+husky + commitlint
搭建Registry&Harbor私有仓库、Dockerfile(八)+前端一些好学好用的代码规范-git hook+husky + commitlint
26 0
|
5月前
|
开发工具 git
Git——commit的提交规范
Git——commit的提交规范
124 4
|
7月前
|
开发工具 git
一文教你如何设置git commit模板规范
一文教你如何设置git commit模板规范
|
8月前
|
前端开发 测试技术 持续交付
【开发规范】Git Commit 规范
【1月更文挑战第26天】【开发规范】Git Commit 规范
|
8月前
|
JavaScript 测试技术 持续交付
2020你应该知道的git commit规范
2020你应该知道的git commit规范
200 0