Git撤销指定commit并更新远端仓库

Git撤销指定commit并更新远端仓库

一、撤销指定commit

1.首先执行git log 命令,查看git历史提交以及commit信息:
在这里插入图片描述

由于需要脱敏,所以截图可能看得马赛克比较多,需要关注的就是上面的commit后跟的id,以及HEAD当前指定的位置。

现在我希望能将最新的这个commit,也就是commit id开头为19e589bba…的commit 执行撤销,并将撤销更新到远端仓库上,要如何实现呢?

2.执行git reset —soft <commit id> 命令,这里的commit id是你希望HEAD新指向的commit id。
比如,本次我想撤销的是id开头为19e589bba…的commit,则我的git reset命令就需要这样写:

git reset --soft 23818c51cc7d0aefbad8ea...

执行上面的命令后,会显示提示:

HEAD is now at 23818c51c [Improve] [connector-file-base] ....

说明现在的HEAD指针已经指向了我们指定的commit,就不是原先的commit,从而实现了我们本案例的目的:对最新的commit进行撤回。

3.执行git log命令验证commit历史提交
在这里插入图片描述

可以看到,现在HEAD已经指向了我们指定的commit。

4.为了在远端仓库同步更新,需要将撤销进行push。执行:

git push --force origin <branch_name>

branch_name为你要提交到的远端仓库分支名。至此,撤销commit的过程就完成了,可以在远端仓库发现最新的commit被撤回了。

需要注意的是,—force可能需要慎用,比如提交的代码有冲突的话,—force可能会将别人的代码给覆盖掉。

二、git reset 参数

git reset 命令有以下几个主要的参数:
soft:当使用这个参数时,Git会将HEAD指针移到指定提交,但是不会改变索引(指暂存区)和工作目录,你的所有改动都会从暂存区(索引)和工作目录转移到未暂存的更改。这就意味着,本地代码不会变化,我们使用git status依然可以看到,同时也可以git commit提交。

mixed这是git reset的默认行为,如果不提供任何参数这就是它会做的。此参数会将HEAD指针移到指定提交,更新索引(指暂存区),但是不会触碰工作目录。这意味着你在提交以前作了的所有改动将会转移至未暂存的更改。

hard:这个参数将HEAD指针移到指定提交,更新索引(暂存区),并且更改工作目录以匹配指定提交。如果你使用–hard参数并指定一个提交,那么在指定提交之后做的所有更改都将会丢失(代码也回到了那个版本时的代码)。

注意:git reset 是一个强大且可能有害的命令,所以在使用之前应当明白其后果并且要注意安全地使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JermeryBesian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值