git撤销本地commit、撤销本地merge、撤销远程push

git撤销本地提交

写完代码后,我们一般使用下面的命令提交代码

git add .   #添加所有文件
git commit -m "代码提交"   #提交代码

如果执行完commit后,想撤回commit,该怎么办?

使用下面命令即可撤回:

git reset --soft HEAD^  #撤销最近一次提交

这样就成功的撤销了最近一次的commit


本操作仅仅是撤回commit操作,写的代码仍然保留

说一下个人理解:
HEAD^ 的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2

至于这几个参数:

–-mixed 意思是:不删除工作空间改动代码,撤销commit,并且撤销git add .  操作

这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的
–-soft
不删除工作空间改动代码,撤销commit,不撤销git add . 
--keep
任何本地更改都将丢失,文件将恢复到所选提交的状态,但本地更改将保持不变。
你已经提交了,然后你又在本地更改了,如果你选keep,那么提交的内容会丢失,你提交后又本地修改未提交的内容不会丢失。
–-hard
文件恢复到所选提交状态,任何更改都会丢失。删除工作空间改动代码,撤销commit,撤销git add . 

注意完成这个操作后,就恢复到了上一次的commit状态。
顺便说一下,如果commit注释写错了,只是想改一下注释,只需要:
git commit --amend

此时会进入默认vim编辑器,修改注释完毕后保存就好了。

撤销本地合并(merge)

git merge --abort

如何撤销远程提交(push)

第一种方式是使用git reset --hard
git reset --hard   #撤销并舍弃指定的版本号之后的提交记录。使用需要谨慎。

示例:

git reset --hard 773b0e55ad81a55d2f964d530443931f25bce9d8

然后需要push到远程分支,但是直接git push, 是会报错的,因为本地版本落后于远程,需要强制推送命令

git push -f 

然后查看本地和远程分支,可以看到我们的commit提交的那个版本没有了,版本回退到了提交之前的版本

这种强制提交,如果使用的是gitlab, 权限不是maintainer, 提交也会失败,需要找管理员提交。

注意:这种方式会把提交的代码直接舍弃,非常不建议使用!

第二种方式是使用 git revert 命令

这种方法非常适用于提交后报错一直解决不了的,前提是提交前项目可以正常运行
git revert 撤销。但是保留了提交记录。并且他是移除指定的提交。
获取需要回退的版本号,注意这里和上面的不一样,上面的是回退到之前的某一个版本,现在是撤销当前的版本。

  • 1.执行git log 命令 查看已经提交过的commit信息版本号
  • 2.git revert 版本号 ,(例子 git revert 773b0e55ad81a55d2f964d530443931f25bce9d8
  • 3.输入键盘 i 键,进入编辑状态,改一下提交的名称,
  • 4.键盘Esc键,再去输入冒号 ,在输入 wq, 执行一下回车enter键,就ok了
  • 5.然后再git push到远程分支,即可。
    当然了你在第3个步骤的时候也可以不编辑,直接操作下一步就行,i ——> ESC ——> : ——> wq ——> enter ——>push
    这种方式可以只回退某一个版本,并且回退之后,还会保留之前版本的记录。推荐
git一键更新所有的本地分支
for i in `git branch | sed 's/^.//'`; do git checkout $i ; git pull; done
  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值