git切换分支导致代码丢失的问题

场景:在A分支下对代码做了修改(起个名字叫code1),执行add + commit操作后,切换到B分支下,发现原来修改的代码丢失。

两种解决方案(指令中的“+”号不是输入的内容):

方案1:

依次执行指令 :

(1)git checkout A,切换到原来的A分支下。  

(2)gitk:查看本地文件变动的历史记录(仅供参考,个人觉得很好使很强大的指令,可以跳过这一步)

(3)git log:查看commit 的历史信息(复制记录下来想要转移到B分支的code1的commit的id号)

(4)git checkout B,切换到B分支下。

(5)git  cherry-pick + “刚刚复制的commit的id号”:将已经commit的patch再次commit到B分支上。接下来的push代码就不说了。

方案2:

依次执行指令 :

(1)git checkout A,切换到原来的A分支下。  

(2)git format-patch -x:将git在当前分支下往前x个提交的内容达成一个patch包。

(3)git checkout B,切换到B分支下。

(4)git  am + “该patch名称” 或者 git apply + "该patch名称"

注:am和apply的区别在于:前者的修改是默认包括了add和commit操作的,但是commit的id号保持不变;而后者是没有add和commit操作的,需要用户资格再次根据情况选择是否add和commit;个人觉得apply更好使一些,在找回修改的代码的原则上保持了操作的灵活性)

(5)rm xxx.patch:删除之前打的patch包,以免patch包和代码混杂在一起。


本文主要针对git新手,尽可能的步骤完整以及阐述每个指令的作用和技巧,如有疑问和不足欢迎交流和指正。

  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值