一次救命操作--git reset HEAD@{1}

本文分享了在进行代码移植过程中遇到的Git merge冲突问题及解决方案,详细介绍了如何通过制作patch、同步代码以及使用特定Git命令撤销误操作的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事情是这样的。

因为在porting一个大框架,所以本地积攒了不少修改的代码。终于验证完整了,准备提交code。 悲剧来了,我的code提上去之后显示merge conflict,并且,rebase也没有用!

其实,我们都知道正规的操作是在修改代码之前把本地code和服务器上的先同步。 但是像这样会修改到一些很容易被大家都改动的代码,并且你的验证工作需要好几天的时候,就比较容易遇到这样和别人的提交冲突的情况。

事已至此,我只好把自己的提交做成patch,先把本地的code同步一下服务器再打上去。

吭哧吭哧打了半天,终于一个一个文件修改好了。 

这时很开心,开始摩拳擦掌准备提交了。

git add -A

git commit --amend

啥? 这时什么鬼。完全是误操作呀。 git commit --amend在你已经有提交信息(git commit -s -m "xxxxx")的时候,是用来修改提交信息的内容的呀。 但是!在这里根本就还没有git commit -s -m "xxxxx"。所以,会发生什么呢?

我的提交和这个project的上一个人的提交合并了!

我修改半天的code,居然和别人合并了,这怎么能行。

于是我想把我的误操作git commit --amend撤销掉。

经过求助,小伙伴甩给我一个链接:

https://segmentfault.com/a/1190000014272359 

嗯,实际上撤销分为两步:

1. git reflog --》查看想要回退到哪一步。

2. git reset --soft HEAD@{1} --》回退一步。

如果想撤销到暂存区, 就用 git reset --soft HEAD@{1} 
如果想干掉这个修改, 就用 git reset --hard HEAD@{1}

有了这个操作,再也不用担心自己手残了呢。 因为这个操作,对本地的其他的一些操作也有效。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值