• git 进阶


    由一个个case组成:

    case 1

    场景

    在前一家公司的时候遇到过一次,没有完美解决,今天又重现了:我将部分代码从仓库A拆出来,放到新仓库B中,因为图方便,我直接使用了copy命令,但是!!!没有想起来隐藏的.git目录,于是新仓库B的初次提交直接更新到了A上。

    解决办法

    上一次遇到类似的问题,我是直接一个reset --hard 到错误 commit 的前一个 commit,但是自此之后,恶梦开始:因为我们组同学较多,多数从主分支切的代码已经是被污染过的,于是经常带着错误的commit回归!!!
    我左思右想,无法找到合适的办法,好在此次开发的同学不多——并且各自切出去的分支都是没有被污染的,我手动reset了所有被污染的分支,再让同学们将已经提交的在污染之后的功能手动合并到主分支上。左右算是解决了。

    这种错误的commit没有及时发现,发现时已经在后面提交了许多正常commit的情况应该不算少见,如何在发现之后方便地解决问题?我目前想到的就是使用git rebase的提交规范,保证大家的commit都是连续的,这样在解决此类错误的相对来说还是比较方便的。

    case 2

    场景

    本地 reset 过猛,跑过头了,像以前我可能直接就把本地的仓库直接删了,再下载一个,今天忽然觉得太low了。于是我搜了下,发现一个很好玩的命令,git reflog

    git reflog

    git reflog 记录了本地git上的所有操作,并且有对应的索引,可以直接使用git reset 索引的方式,回归到对应的操作。

    140c8eb HEAD@{0}: reset: moving to 140c8ebcf6d
    

    使用 140c8eb 和 Head@{0}都可以回归。


  • 相关阅读:
    一位阿里架构师给每个程序员的小建议
    一位阿里架构师给每个程序员的小建议
    Redis五种数据类型详解
    Redis五种数据类型详解
    Redis五种数据类型详解
    JavaScript易错知识点整理
    JavaScript易错知识点整理
    JavaScript易错知识点整理
    船上比拼酒量_暴力破解
    phantomjs
  • 原文地址:https://www.cnblogs.com/magma/p/8343215.html
Copyright © 2020-2023  润新知