Git撤销push

继续Git系列,看下push的取消,基本到这里了。

先看文章:

git push了怎么撤销-git-PHP中文网

第一种方法:

看起来是再提交一次,并没有撤销或者说删除上次错误提交的版本。只是不明白,为什么这里要强制推送呢?只记得本地版本比远程版本低时推送要加force参数。比如reset过的版本。

第二种方法:

和下面这篇:

Git撤销已经推送(push)至远端仓库的提交(commit)信息_git撤销已经提交的commit-CSDN博客

以及:

git回退到指定版本,同时提交记录也会删除_git回退过头之前的提交记录消失-CSDN博客

即是讲git reset命令,当然可以实现。相比而言,还是比较简单的,应该用得比较多。注意,其中git reflog是看push的版本号,而不是用git log!后者是看commit的版本号!看下面例子:

但是,看很多文章,好像用git log即commit的版本号也是可以的,都是用git reset命令。想来,上篇也提到过,git reset是可以撤销commit及add的,想必也就撤销了push???

先不管这个了。需要解决一个问题是:加hard参数,有时会报错,即无权限。看:

remote: GitLab:You are not allowed to force push code to a protected branch on this project_remote: gitlab: you are not allowed to force push -CSDN博客

You are not allowed to force push code to a protected branch on this project.-CSDN博客

这都是GitLab的设置,亲测可以修改,然后push --hard就能成功。

另外,下面这个,是不需要用版本号的,但是基本是撤销上个版本的psuh。

[git] 撤销已经push的提交_51CTO博客_git 撤销push上的提交

需要注意的是,无论是用reflog还是log,只要用reset,都是针对commit的,都需要再push一下!且要加force参数。需要特别注意的是:reset其实是删除了其之后的版本!如果之后有别人提交的版本,或者有不需要删除的版本,即,想只撤销某个版本的push,而不是将其后的版本都撤销,那么需要采用revert来做,当然,目标更恰当的说,是变成了删除某指定版本了!

同样其实是先针对commit做操作,再push,所以引文和上篇中一篇一样:

Git进阶命令-revert - 雨点的名字 - 博客园 (cnblogs.com)

还有更高的,用rebase直接修改记录文件(我猜应该是上面一些文中提到的commits文件吧),当然,最后还是要push一下:

git 删除某个中间提交版本 - 刘-皇叔 - 博客园 (cnblogs.com)

暂且就这么多吧。

相关推荐
码厂一粒沙1 分钟前
【代码管理】git使用指南(新手向)
git
李贺梖梖9 小时前
Git初识
git
~央千澈~9 小时前
git大文件储存机制是什么-为什么有大文件会出错并且处理大文件非常麻烦-优雅草卓伊凡
git
Komorebi_999910 小时前
Git 常用命令完整指南
大数据·git·elasticsearch
stark张宇12 小时前
Git 与 GitHub 协同工作流:从0到1搭建版本控制体系
git·gitlab·github
爱吃生蚝的于勒12 小时前
【Linux】零基础学会Linux之权限
linux·运维·服务器·数据结构·git·算法·github
minji...13 小时前
Linux相关工具vim/gcc/g++/gdb/cgdb的使用详解
linux·运维·服务器·c++·git·自动化·vim
Arva .1 天前
开发准备之日志 git
spring boot·git·后端
奇某人1 天前
【嵌入式】【GIT】终端中文乱码修复
git
可爱的蜗牛牛1 天前
上传本地git所有历史记录到已有远程仓库
git