git用法

作者: gykimo | 来源:发表于2020-11-25 21:47 被阅读0次

    git rebase

    场景:时间A,从master分支拉出一个开发分支如develop分支,然后develop分支有几个commit。但是这个期间,master也有几个commit,所以develop分支想基于最新的master分支。这个时候会遇到两种情况,develop与master没有冲突和有冲突。

    没有冲突

    这种情况比较好办,rebase流程如下:

    1. git checkout master,切到master分支
    2. git pull,将master分支更新到最新
    3. git checkout develop,切到develop分支
    4. git rebase master,将develop rebase到master分支,由于没有冲突,所以直接就成功
    5. git push origin develop,将develop更新到远端仓库,这样仓库的develop分支也rebase到master分支了

    有冲突

    稍微麻烦一些,中间会需要解决几次冲突

    1. git checkout master,切到master分支
    2. git pull,将master分支更新到最新
    3. git checkout develop,切到develop分支
    4. git rebase master,将develop rebase到master分支,由于有冲突,所以会提示“CONFLICT (content): Merge conflict in”
    5. git status,会出现文件列表,绿色的表示没有冲突的文件,红色表示有冲突的文件列表,文件前面会提示“both modified:”,说明master分支和develop分支都修改了这个文件,两者有冲突
    6. 解决冲突,打开有冲突的文件。冲突的代码按照下面的方式提示:
      <<<<<<< HEAD
      master的代码
      =======
      develop的代码
      >>>>>>>
      所以需要看是保留master的代码还是develop的代码,还是自己手动改代码。
      等都解决了冲突后,git add 冲突的文件。
    7. git rebase --continue,继续rebase,很多时候,一次性解决不了所有的冲突,所以很可能继续提示有冲突,这个时候重复5、6、7步骤。当执行git rebase --continue成功时,这个时候表示解决了所有的冲突。
    8. git push -f origin develop,将最新的develop更新到仓库,-f表示强制更新,一般情况下,local的develop的代码和仓库的代码肯定也有冲突了,所以需要-f,否则会提示push失败的。

    合并多个commit

    https://www.jianshu.com/p/964de879904a

    在使用 Git 作为版本控制的时候,我们可能会由于各种各样的原因提交了许多临时的 commit,而这些 commit 拼接起来才是完整的任务。那么我们为了避免太多的 commit 而造成版本控制的混乱,通常我们推荐将这些 commit 合并成一个。

    首先假设我们有3个 commit

    image

    我们需要将 2dfbc7e8c4e858b5 合并成一个 commit,那么我们输入如下命令

    image

    其中,-i 的参数是不需要合并的 commit 的 hash 值,这里指的是第一条 commit, 接着我们就进入到 vi 的编辑模式

    image

    可以看到其中分为两个部分,上方未注释的部分是填写要执行的指令,而下方注释的部分则是指令的提示说明。指令部分中由前方的命令名称、commit hash 和 commit message 组成。

    当前我们只要知道 picksquash 这两个命令即可。

    • pick 的意思是要会执行这个 commit
    • squash 的意思是这个 commit 会被合并到前一个commit

    我们将 c4e858b5 这个 commit 前方的命令改成 squashs,然后输入:wq以保存并退出

    image

    这是我们会看到 commit message 的编辑界面

    image

    其中, 非注释部分就是两次的 commit message, 你要做的就是将这两个修改成新的 commit message。

    image

    输入wq保存并推出, 再次输入git log查看 commit 历史信息,你会发现这两个 commit 已经合并了。

    image

    注意事项:如果这个过程中有操作错误,可以使用 git rebase --abort来撤销修改,回到没有开始操作合并之前的状态。

    作者:_Ryeeeeee
    链接:https://www.jianshu.com/p/964de879904a
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:git用法

          本文链接:https://www.haomeiwen.com/subject/twxoiktx.html