zoukankan      html  css  js  c++  java
  • Git bash 冲突处理,找回reset hard已经commit代码

    Git是个好工具,如果不熟的话,真的很令人惊心动魄!
    记录下今天碰到的git问题,一波三折,先是更新代码有冲突,只能用git bash处理,然后是代码被误删,然后找回,这次学到的是真多:

    更新分支最新代码

    $ git pull origin develop_common 
    From http://****/product_doc
     * branch            develop_common -> FETCH_HEAD
    warning: Cannot merge binary files: ***/***/**/***.xlsx (HEAD vs. 4f64df766c62f5c83a56b222ee23bdd4b3275c64)
    warning: Cannot merge binary files: ***/***/**/***.xlsx (HEAD vs. 4f64df766c62f5c83a56b222ee23bdd4b3275c64)
    Auto-merging ***/***/**/***.xlsx
    CONFLICT (content): Merge conflict in ***/***/**/***.xlsx
    Automatic merge failed; fix conflicts and then commit the result.
    
    代码有冲突,嗯。。。。
    感觉用git bash解决冲突还是比较麻烦的,如果冲突比较少的话,简单一点的解决方法就是,保存下本次修改的代码,
    然后回退到上个版本或者回退到没有冲突的版本,然后再更新代码,让本地分支代码合远程代码保持一致,
    然后将本地另存的代码对比合并到本地分支上,最后提交就行。
    

    1.处理冲突:回退代码

    $ git reset --hard HEAD
    
    注意:我此处采用的reset hard回退,这个回退会将本地工作区修改的代码回退到指定版本,已经add的也会消失,慎用!!!
    因为我本地没有修改代码,没有add代码,而且我已经将上次修改的文件另存了,所以用这个命令。
    git rest --hard HEAD^:回退到上一版;
    git rest --hard HEAD^^:回退到倒数第二版;
    git rest --hard 3628164:回退到commit id为3628164的版本,commit id 可以根据git log查看;
    

    2.处理冲突:更新本地分支代码到最新

    $ git pull origin develop_common
    

    3.处理冲突:将修改代码手动合并到本地分支上

    就在这一步时,突然发现自己当时只保存了两个冲突的文件,没有保存其他修改文件,。。。。!!药丸啊!
    

    4.找回代码

    如果手动修改比较麻烦,再改一遍肯定不现实,已经commit了,不知道能不能被找回,上网找了一顿后,真发现有能恢复到之前版本的方法!:
    
    $ git  reflog  //可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作),神仙操作,一辈子忘不了!
    
    找到之前那次有冲突的提交,进行恢复
    
    git reset --hard HEAD@{5}
    
    恢复了!!!
    
    然后将修改文件全部取出,重新reset hard Head,pull origin develop_common,再将修改的代码放上去,然后提交,ok了
    

    以上处理冲突的方法是应当时情况而定的,对于较多的文件冲突或提交中有较多修改是比较不合适的,从网上找了下git bash 处理冲突的方法,适用面更广一些,而且更安全

    注意:被reset hard 之后,已经add或者commit过的可以被找回,没有add过的,就是真的找不回了!!!

    参考文档:

    1. 用Git Bash 合并代码处理冲突 https://www.jianshu.com/p/0063f1d8565b
    2. git reset --hard后的本地代码找回(commit和没有commit但add了两种情况)https://blog.csdn.net/wangyueshu/article/details/90919019
    3. git reset --hard HEAD https://www.jianshu.com/p/3d6606517c3a
    金无足赤,人无完人,若有文章什么问题欢迎各位批评指正,共同交流,共同进步。 另,人过留名,雁过留声,少侠觉得还行的话留下个赞吧!:)
  • 相关阅读:
    lua的多种实现方式(1-100的和)
    51单片机交通灯(定时器+38译码器+中断)
    51单片机定时器实现LED闪烁
    51单片机0号与1号外部中断实例
    51单片机:IO口扩展芯片用法(74HC165,74HC595)
    mybatis org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
    Intellij IDEA运行报Command line is too long解法
    Jmeter命令行运行实例讲解
    Windows10在当前目录快速打开cmd的方法
    Jmeter接口测试对json串中的值进行断言
  • 原文地址:https://www.cnblogs.com/thePeaceOftheLord/p/13647200.html
Copyright © 2011-2022 走看看