您的位置:首页 > 编程语言

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

2016-10-25 17:44 1266 查看
场景:在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新手,尽可能的步骤完整以及阐述每个指令的作用和技巧,如有疑问和不足欢迎交流和指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐