Git:分支管理

Git:分支管理

Tags: Git


本文主要包含如下内容:


   参考博客
   参考博客


分支管理介绍


  HEAD 指向的就是当前分支,在只有一条时间线时,这个分支叫主分支,即 master 分支。所以,HEAD 指向 master,master指向提交。(HEAD(当前版本) -> master -> 最新的提交)

  

  当我们创建新的分支,Git 新建了一个指针叫 dev,指向 master 相同的提交,再把 HEAD 指向 dev,就表示当前分支在 dev 上:

  

  从现在开始,对工作区的修改和提交就是针对 dev 分支了,比如新提交一次后,dev指针往前移动一步,而 master 指针不变:

  

  最后,我们可以把 master 指向 dev 的当前提交,就完成了合并:

  

  合并完分支后,甚至可以删除 dev 分支。删除 dev 分支就是把 dev 指针给删掉,删掉后,我们就剩下了一条 master 分支。


创建与合并分支


    查看分支:git branch

    创建分支:git branch <name>

    切换分支:git checkout <name>

    创建+切换分支:git checkout -b <name>

    合并某分支到当前分支:git merge <name>

    删除分支:git branch -d <name>

  示例如下:

    git branch            // 查看当前分支
    git checkout -b dev   // 创建了一个分支,并且切换到 dev分支上
    git checkout master
    git merge dev         //分支合并
    git branch -d dev     //删除dev分支

解决冲突


  若出现冲突,必须手动解决冲突后再提交。 git status 可以告诉我们冲突的文件:

    git status

  当 Git 无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突后,需要重新提交,再删除之前的分支即可。

  例如:新分支 featurel 下,修改 file1.txt 文件,然后切回 master 分支上,也进行修改同一个文件 file1.txt 同一行,然后提交!最后合并会发生冲突。

  使用 git log --graph 命令可以看到分支合并图

    git log --graph --pretty=oneline --abbrev-commit

分支管理策略


  合并分支的两种模式:

  fast forward 模式,合并后,删除分支,分支信息将会丢掉。

    git merge dev 

  普通模式 合并时添加 参数: “–no-ff” ,合并(merge)时生成一个新的commit,这样分支历史上就可以看到分支信息。
  不使用 Fast forward 模式,merge 后就像这样:

    git merge --no-ff -m "merge with --no-ff" dev

  

  团队的分支结构图


零时 bug 处理


  修复 bug 时,我们会通过创建新的 bug 分支进行修复,然后合并,最后删除;

  当手头工作没有完成时,先把工作现场 git stash 一下,然后去修复 bug ,修复后,再 git stash pop ,回到工作现场。

    git stash
    git stash pop

多人协作 git pull


  在本地创建和远程分支对应的分支,使用 git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
  首先,可以试图用 git push origin <branch-name> 推送自己的修改;
  如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并;
  如果合并有冲突,则解决冲突,并在本地提交;
  没有冲突或者解决掉冲突后,再用 git push origin <branch-name>推送就能成功!
  如果 git pull 提示 no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令 git branch --set-upstream-to <branch-name> origin/<branch-name>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值