• git rebase


    1 使用git rebase的一般开发过程

    假设Git目前只有一个分支master。开发人员的工作流程是

    git clone master branch
    在自己本地checkout -b local创建一个本地开发分支
    在本地的开发分支上开发和测试
    阶段性开发完成后(包含功能代码和单元测试),可以准备提交代码
    首先切换到master分支,git pull拉取最新的分支状态
    然后切回local分支
    通过git rebase -i 将本地的多次提交合并为一个,以简化提交历史。本地有多个提交时,如果不进行这一步,在git rebase master时会多次解决冲突(最坏情况下,每一个提交都会相应解决一个冲突)
    git rebase master 将master最新的分支同步到本地,这个过程可能需要手动解决冲突(如果进行了上一步的话,只用解决一次冲突)
    然后切换到master分支,git merge将本地的local分支内容合并到master分支
    git push将master分支的提交上传
    本地开发分支可以灵活管理

    2 git rebase是什么

    git rebase处理的对象是本地分支,它将上游分支的修改合入到本地分支,比如将主干分支的修改合入到本地分支。本地分支本来是基于主干的某次提交,现在主干分支有新的提交,git rebase之后,本地分支将基于主干分支最新的提交。正如rebase的含义,本来是base主干分支的老的提交,现在rebase,基于主干分支最新的提交。

    git rebase的时候应该切换到本地分支,然后git rebase master,解决冲突之后,git rebase --continue。

    3 将本地分支合入到主干分支

    切换到主干分支,git checkout master,然后git merge dev,如果出现冲突的话,解决冲突,然后git add/git commit就行。

    分支合并是主干分支最新的提交、feature分支最新的提交和它们的最近祖先提交三者之间的合并,然后生成一个新的提交。如果创建分支之后主干不前进的话,合并分支的时候不会生成新的提交。

    4 git rebase用在本地分支上吗?git rebase master分支到本地分支了之后呢?如果有修改的话,再如何合入master分支呢?

    git rebase会把本地分支上的提交保存为patch,重新生成新的提交,保留master上的提交历史。所以,git rebase前最好用git rebase -i HEAD~3来合并本地的提交。再合入master分支的话,就到master分支,把本地的分支merge进去就行。然后再提交到远程库。 

    5 注意事项

    “我个人推荐大家开发的时候,尽量及时rebase上游分支(我习惯是每周merge一次),有冲突提前就fix掉,即使我们自己的分支开发了很久(哪怕是几个月),也不会积累太多的conflict,最后合并进主分支的时候特别轻松, 非常反对从master check出新分支,自己闷头开发几个月,结果最后merge进主分支的时候,一大堆冲突,自己还嗷嗷叫的行为。”
    6 git merge做的事情
    将两个分支的当前快照和他们的共同祖先三者进行了一个merge,然后生成一个新的提交。
    7 git rebase相关的命令
    通过下面的命令合并本地的4次提交。
    git rebase -i HEAD~4
  • 相关阅读:
    BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊
    算法笔记-- 二进制集合枚举子集 && 求子集和 && 求父集和
    BZOJ 1084: [SCOI2005]最大子矩阵
    BZOJ 1968: [Ahoi2005]COMMON 约数研究
    2018 German Collegiate Programming Contest (GCPC 18)
    Codeforces 1100 F
    算法笔记--极大极小搜索及alpha-beta剪枝
    2017 Russian Code Cup (RCC 17), Elimination Round D
    All You Can Code 2008 (Romanian Contest) A
    2016 Russian Code Cup (RCC 16), Final Round B
  • 原文地址:https://www.cnblogs.com/hustdc/p/10877508.html
Copyright © 2020-2023  润新知