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新手,尽可能的步骤完整以及阐述每个指令的作用和技巧,如有疑问和不足欢迎交流和指正。
两种解决方案(指令中的“+”号不是输入的内容):
方案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新手,尽可能的步骤完整以及阐述每个指令的作用和技巧,如有疑问和不足欢迎交流和指正。
相关文章推荐
- git 仓库切换分支不是最新代码问题
- 1git命令的使用,查看git仓库状态,添加文件到git跟踪,git提交,查看git分支,查看git仓库日志信息,切换git分支,解决git分支合并后出现冲突的问题
- 类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们的问题的解决方法 续集
- git之 分支切换时相互影响的问题
- 【git】在分支中执行add,commit之后,代码丢失
- Android中横竖屏切换加载不同布局导致fragment数据丢失的问题
- 1git命令的使用,查看git仓库状态,添加文件到git跟踪,git提交,查看git分支,查看git仓库日志信息,切换git分支,解决git分支合并后出现冲突的问题
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
- Git(GitHub) 003 如何 clone 非 master 分支的代码 — 切换到指定 branch分支 或者 tag版本
- 切换develop命令获取git上其他分支的代码
- 记录一次操作git 的愚蠢行为(本地代码只 git add 过,没有 commit ,push 过,然后版本回退 导致本地代码丢失)
- 类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们的问题的解决方法
- Git Stash用法,方便临时处理bug时随时切换分支而不丢失修改
- git分支切换问题
- git仓库管理分支误操作 导致文件丢失
- 《对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们》的问题的解决方法
- git 分支无法切换问题
- git切换分支保存修改的代码的方法(转载)
- Git 修改 proxy,解决代理导致的代码无法 push 或 pull 的问题
- git本地仓库,分支切换的文件修改问题