git撤回push代码方法 分支受保护 不受保护时 详解

git撤回push代码方法 分支受保护 不受保护时 详解

1.分支受保护时用revert

1.先说结果:

如果分支受保护,那么就不能reset方法来撤回,原因后面说。那么需要通过revert来撤回。

2.可以的方法:

git revert能够生成一条revert记录,与commit记录相似,那么我理解的是:提交内容虽然撤回,提交记录还是向前的,不会低于orgin的版本。

git revert命令详解:git revert SHA,SHA指需要撤销的commit的SHA(我是先撤最近一次,再撤第二次,可在本地看到每次更改的代码),SHA可在git commit的那条记录中复制过来,如图。
在这里插入图片描述

3.commit push

在revert之后,要像平常提交commit一样,push到远程,在远程分支上才能够有变化。

总体代码如下:

git revert SHA
git commit ....
git push origin <branch>

2.分支不受保护时可用reset

1.为什么保护分支要用revert不能用reset?

这就涉及到reset和revert的区别了,还是那个道理:reset仅回退版本,revert在回退的同时产生新的提交记录。

reset的代码(再次提醒,reset只是撤回了本地的commit),push时会提醒版本落后于origin。

于是强制push到远程,但是受保护的分支不允许强制push。(那么我先pull一下远程代码呢?瓦!这样就更错误了,远程是没有撤销之前的代码)。

所以只能通过revert来解决。

2.reset方法的代码
git reset --soft [版本号]/HEAD~N
git push --force
3.reset详解

具体地,解释reset命令用法,参考原文链接:https://blog.csdn.net/chenxi_li/article/details/108124186

回退版本使用git reset,其中这条命令中又分为两种

git reset --soft
git reset --hard 

在我们git push成功提交后,若想要撤销这次提交,可以用git reset命令,如下

git reset --soft [版本号]/HEAD~N
git reset --hard [版本号]/HEAD~N

上面的区别是,git reset --soft会保留本地仓库代码的修改,git status可以保留提交之前最后的状态,可以再次git commit,git push。而git reset --hard不会保留本地仓库代码的修改,会一并撤销掉这笔提交本地仓库的代码修改。git reset –soft HEAD~1 回退到上一个版本,即git add . 后的内容

3.1获取版本号两种方式

git reflog 查看自己提交的各种版本
git log 查看所有人提交的版本

git reset --soft d5f66a591d9c0c909c9b8a9379c1cc8e9b283ae4
// 或者
git reset --hard d5f66a591d9c0c909c9b8a9379c1cc8e9b283ae4

常用:回退到上一个push前(add后的)

git reset --soft HEAD~1
// 或者(同上效果一致)
git reset --soft HEAD^
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值