Git误操作补救错失:恢复误删的本地分支、将某个提交从一个分支复制到另一个分支

一、恢复误删的本地分支

        作为一枚强迫症,没用的分支总是喜欢及时删删删删掉删掉统统删掉,结果今天发现有些分支还是应该保留。

        比如,①前段时间切了个分支用来专门做图表,但因为需求还没有最终确定,已经上线了测试服而没有上正式服。②现在需要对那部分图表进行改动,就发现本地除了测试分支外,其它分支都没有图表相关代码了。③如果从测试分支切一个出来修改,又会有新的问题:等到上线的时候,我这个分支需要合并到prod中,那就相当于将test分支的一些代码也给合并到prod了,那可真的是太太太太危险了!!!

       所以,只能是把之前的分支找回来,我在网上找了一些方法,发现都不够方便,最终用以下方法很顺利地就恢复了。

第一步:首先,我只是删除了本地分支并且我已经不记得确切的名字了,远程分支并没有删除,所以直接先查一下远程分支寻找一下是哪个名字(如果还记得误删的分支叫啥名字,就不用查了)。

git branch -a //查看本地和远程所有分支
//或者
git branch -r //只查看远程分支

 第二步:直接checkout切换去目标分支。切换后可以发现,在该分支可以看到以前的所有提交记录,太感动了!!!

git checkout <branch name>

 第三步:git pull拉一下代码,完事。估计不拉也没事儿,因为和远程本来就是同步的。

git pull

二、将某个提交从一个分支复制到另一个分支

        我应当是把代码提交到B分支的,但是由于各种原因不小心提交到了A分支,现在需要把提交在A分支的commit给复制到B分支,可以这么操作:

第一步:切换到 A 分支

git checkout 

 第二步:查询错误commit的ID并复制出来。

git log

 第三步:切换到B分支(正确的目标分支)。

 git checkout B

 第四步:将该commit给pick到B分支。(比如ID是99f8684713f7f7beacbe4968ff4232c41f9d572f)。

 git cherry-pick 99f8684713f7f7beacbe4968ff4232c41f9d572f

注意:这里的ID就是要pick的那个commit自己的ID。

        此时,可以再git log查看一下,可以发现B分支上已经有这个commit了,但是commit ID已经变了,所以这是复制,而不是转移,A分支上的这个错误的commit依然存在。于是,我们需要去A分支把它删掉。

切换到 A 分支

git checkout 

 查询错误commit的 ID并复制出来。

git log

把这个错误的commit删除掉(比如ID是1f5fea8fe88974f0bc9d106ad3f88fc4a9b4c222)。

//如果这个commit是最新的提交,可以reset让这个commit毫无痕迹地消失,一去不复返
git reset --hard 1f5fea8fe88974f0bc9d106ad3f88fc4a9b4c222(目标版本号)
git push -f 

//如果这个错误commit后面还有其他commit,一定要用revert去回退啊~~但是它会增加一条记录
git revert 1f5fea8fe88974f0bc9d106ad3f88fc4a9b4c222(目标版本号)
git push

注意:这里的ID指的是目标版本的ID(要回到的位置),一般是错误commit的前一个commit的ID。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值