美文网首页
git工作流

git工作流

作者: YQY_苑 | 来源:发表于2018-08-16 10:38 被阅读0次

    集中式工作流

    image.png

    集中式工作流以中央仓库作为所有项目所有修改的单点实体,也就是说改工作流只有master一个分支,所有的修改提交到这个分支上。

    步骤:

    1. 首先假设中央仓库已将建好地址是ssh://user@host/path/to/repo.git,开发团队的所有人clone一份

      git clone ssh://user@host/path/to/repo.git
      
      
    2. 假设小明在自己的工作目录修改增加文件,跟踪文件,提交

      git status # 查看本地仓库的修改状态
      git add # 暂存文件
      git commit # 提交文件
      
      
    3. 小明的开发完成了,推送到中央仓库

      git push origin master
      
      

    由于中央仓库自从小明克隆以来还没有被更新过,所以push操作不会有冲突,成功完成。

    1. 小红在之后也完成了自己的开发,需要推送到中央仓库

      git push origin master
      
      

      但是由于小红的本地仓库历史已将和中央仓库有了分歧,所以会报错,git拒绝推送

    2. 这时小红要解决冲突,她要先pull小明的更新到她的本地仓库合并上她的本地修改后,再重试。

      git pull --rebase origin master
      git push origin master
      
      

      --rebase选项告诉Git把小红的提交移到同步了中央仓库修改后的master分支的顶部,如下图所示:

    image.png
    1. 如果小红和小明开发的是不同的功能,不大可能在rebase的时候冲突,若果有Git在合并有冲突的提交处暂停rebase过程,输出下面的信息并带上相关的指令:

      CONFLICT (content): Merge conflict in
      然后小红用 git status 来查看哪里有问题,查看unmergeed paths
      接着小红修改这些文件的冲突,重新提交

      git status
      //小红 fix conflics
      git add somefile
      git rebase --continue
      git push origin master
      
      
    
        要做的就这些了。Git会继续一个一个地合并后面的提交,如其它的提交有冲突就重复这个过程。
        如果你碰到了冲突,但发现搞不定,不要惊慌。只要执行下面这条命令,就可以回到你执行git pull --rebase命令前的样子:
    
        `git rebase --abort`
    
    ### 功能分支工作流
    
    *   功能分支工作流的核心是所有的功能开发应该有一个单独的分支,而不是在master分支上
    *   功能分支工作流和集中式工作流一样都使用中央仓库,并且master分支还是代表了正式项目的历史,但不是提交本地历史到master上而是开发者每次在开发一个新的功能时都新建一个分支,在这个分支上开发新功能。
    *   在master分支和功能分支之间,Git是没有技术上的区别,所以开发者可以用和集中式工作流中完全一样的方式编辑. 暂存和提交修改到功能分支上。
    
        #### 步骤:
    
        1. 开发人员小红开发一个新功能 new-feature
    
        ```
        git pull  origin master
        git checkout -b new-feature 
        git status
        git add
        git commit
        git push -u origin new-feature
    
        ```
    
        然后小红没有merge到 master的权限,所以小红发了一个pull request 到给项组的大家一起review 代码,提出评论或修改建议,
    
    2. 要再做修改,小红用和功能第一个迭代完全一样的过程。编辑. 暂存. 提交并push更新到中央仓库。小红这些活动都会显示在Pull Request上,小黑(项目组长)和其他项目人员可以断续做评注。
    如果小黑有需要,也可以把marys-feature分支拉到本地,自己来修改,他加的提交也会一样显示在Pull Request上
    
    3. 一旦大家讨论同意了发布这个功能后,项目组长小黑可以的接受Pull Request,就可以合并功能到稳定项目代码中
    
        ```
        git checkout master
        git pull
        git pull origin marys-feature
        git push
    
        ```
    
    7. 与此同时,小明在做和小红一样的事
        当小红和小黑在marys-feature上工作并讨论她的Pull Request的时候,小明在自己的功能分支上做完全一样的事。
    

    相关文章

      网友评论

          本文标题:git工作流

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