Git分支(branch)

本文详细介绍了Git分支的创建、切换、合并及冲突处理流程。通过实例展示了从本地创建新分支,到推送到远程仓库,再到解决因修改同一文件导致的合并冲突。最后,讨论了如何通过gitpull同步远程分支,以及如何预防和解决合并冲突。
摘要由CSDN通过智能技术生成

Git分支详解

环境

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值