Git分支(branch)

Git分支详解

环境

对于git仓库的搭建和github远程库进行连接,参考Git 入门环境配置

一:正常流程

  1. 远程和本地的仓库状态如下
    Git分支(branch)_第1张图片
    其中,head指向当前工作的分支,origin是远程主机名称
  2. 本地创建新分支(Test)并将工作分支指定为该分支
     git branch Test1            //创建新分支
     git checkout Test1          //切换工作分支
    
    Git分支(branch)_第2张图片
  3. 新分支进行修改提交等的日常操作,本文以下划线+数字表示不同的修改提交Git分支(branch)_第3张图片
  4. 可以发现,远程仓库中没有该新分支,所以需要同步该分支
    使用git push同步指令会触发The current branch Test1 has no upstream branch.,也就是远端仓库没有该分支的警告,使用git push --set-upstream origin Test1,将该分支添加到远程分支,此时在github中会显示是否进行合并的请求
    merge1
    点击compare&pull requests,系统会跳转到提交页面Git分支(branch)_第4张图片,相关信息填写后直接提交即可,后面等待管理员进行审核。
    需要注意的是,个人提交和远程库管理者在普遍情况下不会是同一人。个人提交后要交由管理者审核,在上面个人提交请求后,管理者会收到pull requests的请求
    Git分支(branch)_第5张图片系统也会进行相关的工作,管理员确认没问题提交并确认即可
    Git分支(branch)_第6张图片
    此时本地和远端仓库状态为
    Git分支(branch)_第7张图片,这就完成了一个本地分支提交和合并到远端的流程。需要注意的是,如果远端在合并后没有删除新提交上来的分支,那么该分支(Test1)也会同时与Master存在远端,即(origin/Test1)的状态,本地在Test1工作状态下的git push指令能够将本地Test1分支的修改提交同步到远端(origin/Test1),对origin/Master没有影响,这对于项目开发有很多好处,因为可以创建一个临时的远程分支用于临时需求的修改。
  5. 在4中,远程仓库的Master分支合并了Test1分支,但本地的master分支还处于没有合并的状态,本地中切换到master分支并使用git pull来同步远端master和本地maseter的数据。
    Git分支(branch)_第8张图片
    切换回master主分支
    Git分支(branch)_第9张图片同步分支变化

二:冲突流程

在上面的例子中,管理员和系统自检过程中没有发现合并的问题,以下模拟合并冲突的原因和解决方法

  1. 本地创建新分支Test1后,在工作分支不变的情况下(依旧为Maseter),进行本地的修改提交,并使用git push将Master分支的修改同步到远端Master,假设过程中修改的是文件的第一行内容master change
    Git分支(branch)_第10张图片
  2. 本地切换为Test1分支,将同一文件的第一行修改为Test1 change,此时与正常流程一样,提交修改到pull requests,由于修改了同一位置,导致在正常流程中提交系统将无法处理该冲突Git分支(branch)_第11张图片
    解决冲突的过程记录如下
    Git分支(branch)_第12张图片
    系统无法解决冲突
    Git分支(branch)_第13张图片
    修改
    Git分支(branch)_第14张图片
    确认
    Git分支(branch)_第15张图片
    正常合并
  3. 冲突修改合并后
    Git分支(branch)_第16张图片
    git pull同步两端Master
    Git分支(branch)_第17张图片

另一个避免冲突的办法是在提交前使用git pull同步远端已有的修改,在本地处理冲突后再一并提交,这在vsc中很好操作。

参考
如何使用github中的pull request功能?
Git branch && Git checkout常见用法
GitHub 的 Pull Request 是指什么意思?
Git push 常见用法

你可能感兴趣的:(GIT,git)