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
    金无足赤,人无完人,若有文章什么问题欢迎各位批评指正,共同交流,共同进步。 另,人过留名,雁过留声,少侠觉得还行的话留下个赞吧!:)
  • 相关阅读:
    51 Nod 1086 多重背包问题(单调队列优化)
    51 Nod 1086 多重背包问题(二进制优化)
    51 Nod 1085 01背包问题
    poj 2559 Largest Rectangle(单调栈)
    51 Nod 1089 最长回文子串(Manacher算法)
    51 Nod N的阶乘的长度 (斯特林近似)
    51 Nod 1134 最长递增子序列(经典问题回顾)
    51 Nod 1020 逆序排列
    PCA-主成分分析(Principal components analysis)
    Python中cPickle
  • 原文地址:https://www.cnblogs.com/thePeaceOftheLord/p/13647200.html
Copyright © 2011-2022 走看看