【Git教程】Git教程之分支管理

  在前一篇文章中,主要针对Git本地仓库和远程仓库的基本操做命令进行了简要介绍,本文主要集中介绍Git的另外一个主要的特色:分支管理和多人协做。html

什么是分支管理

  当一个任务须要多人协做完成时,每一个人能够建立一个属于本身的分支,只有本身能够看到,每一个人在本身的分支上完成修改提交等任务,最终开发完毕时,将每一个人的分支合并到原来的主分支,这样能够互不影响,而且保证了安全。git

建立和合并分支

  在一开始,git仓库只有一个主分支(master),HEAD指向master,master指向最新的提交;当建立了一个新的分支(好比叫dev)后,增长一个相似于master的指针dev,而且更改HEAD指向dev。安全

<div align=center> ![](https://img2018.cnblogs.com/blog/1608161/201904/1608161-20190410102159504-216886549.png) </div>网站

  这样,当在当前分支修改时,就是在移动dev指针,最后能够经过合并将分支合并到master分支。spa

使用命令以下:
建立分支: $ git branch <branch_name>
切换分支: $ git checkout <branch_name>
建立+切换:$ git checkout -b <branch_name>
查看当前分支: $ git branch //列出全部分支,当前分支前加*
合并某分支到当前分支: $ git merge <branch_name>
删除分支: $ git branch -d <branch_name>

解决冲突

当Git没法自动合并分支时,就必须首先解决冲突,解决冲突之后再提交便可完成合并。 解决冲突就是把Git合并失败的文件手动编辑为咱们但愿的内容,而后再进行提交,使用git log --graph能够看到分支合并图。指针

分支管理策略

Git的分支功能十分强大,在团队开发中应该充分应用,合并分支时,加上--no-ff 参数就能够用普通模式合并,合并后的历史有分支,能够看出来作过合并,而fast forward看不出来曾经作过合并。 团队合做时,master分支应该相对稳定,每一个人的工做在本身的分支上完成。code

<div align=center> ![](https://img2018.cnblogs.com/blog/1608161/201904/1608161-20190410102224352-1262130080.png) </div>orm

Bug分支和Feature分支

这两个分支主要是在软件开发中使用。htm

  • Bug分支:当要修复软件开发中的一个Bug时,一个很好的办法是经过建立一个新的分支来进行修复,修复完成后进行合并,删除Bug分支,而若是当前手头工做尚未完成时,能够先使用命令git stash将工做现场进行保存,而后去分支里修复bug,修复完成后,再经过git stash pop恢复工做现场。
  • Feature分支: 当软件开发中临时增长一个新功能时,一样最好的办法是用一个新的分支来进行开发,完成后再合并,相似于Bug分支,若是想要丢弃一个没有被合并过的分支,能够经过命令git branch -D <branch_name>来强行删除。

多人协做

多人协做的工做模式:blog

  • 首先,能够试图用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>

  查看远程库信息的命令git remote -v   推送本地分支的命令git push origin <branch_name>   建立和远程库对应分支的命令git checkout -b branch-name origin/branch-name

Rebase

  • rebase操做能够把本地未push的分叉提交历史整理成直线;
  • rebase的目的是使得咱们在查看历史提交的变化时更容易,由于分叉的提交须要三方对比。

标签管理

  标签至关于版本库的一个快照,或者说是版本号的一个别名,和某个commit绑定在一块儿。

  • 建立标签: 命令git tag <tagname>用于新建一个标签,默认为HEAD,也能够指定一个commit id;命令git tag -a <tagname> -m "blablabla..."能够指定标签信息;命令git tag能够查看全部标签。
  • 操做标签: 命令git push origin <tagname>能够推送一个本地标签;命令git push origin --tags能够推送所有未推送过的本地标签;命令git tag -d <tagname>能够删除一个本地标签;命令git push origin :refs/tags/<tagname>能够删除一个远程标签。

使用GitHub

  • 在GitHub上,能够任意Fork开源仓库;
  • 本身拥有Fork后的仓库的读写权限,能够推送pull request给官方仓库来贡献代码。

总结

  本文主要针对Git使用相关的分支管理和标签管理进行了记录,实践出真知,多练习使用才是最佳途径!

参考连接

廖雪峰的官方网站 菜鸟教程

相关文章
相关标签/搜索