什么是分支
讲分支前, 我们看一下Workflow
的一个工作流程.什么是Workflow
呢?
workflow
工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型表达并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。
工作流管理系统(WfMS)是处理工作流的电脑软件系统,其主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。工作流需要依靠工作流管理系统来实现。
工作流属于计算机支持的协同工作(CSCW)的一部分。后者是普遍地研究一个群体如何在计算机的帮助下实现协同工作的。
附: 百度百科
- Git Workflow
Git Workflow
工作流定义了一个围绕项目发布的严格分支模型。虽然比功能分支工作流复杂几分,但提供了用于一个健壮的用于管理大型项目的框架。
Git Wokrflow
工作流没有用超出功能分支工作流的概念和命令,而是为不同的分支分配一个很明确的角色,并定义分支之间如何和什么时候进行交互。除了使用功能分支,在做准备、维护和记录发布也使用各自的分支。当然你可以用上功能分支工作流所有的好处:Pull Requests
、隔离实验性开发和更高效的协作。
以上所构建出来的就是使用分支来构建的.
创建分支
现在我们就使用下面的命令去创建一个分支. 这个命令只是创建并没有切换到新创建的分支上. git仓库初始化创建的时候, 会为我们自动创建一个master
的主分支.
$ git branch branch-name
可以从任何的地方创建分支, 并切换到新创建的分支上.
$ git checkout -b branch-name
显示分支
如果我们想要显示当前git
仓库中有多少个分支.
$ git branch -av
分支切换
如果我们想从A分支切换到B分支使用下面的命令.
$ git checkout branch-name
删除分支
如果我们要删除一个分支, 那么我们一定要站在另一个分支上去删除它. 也就是说不能删除当前所在的分支.
$ git branch -D branch-name
合并分支
merge
我们将develop
分支开发的提交, 合并到master
分支上.
$ git checkout master
$ git merge develop
如果出现冲突的时候可以使用mergetool
, 解决冲突.
$ git mergetool
rebase
现在我们决定把 develop
分支的变化也包含进来。我们可以直接把 develop
分支衍合到 master,而不用手工切换到
develop
分支后再执行衍合操作 — git rebase [主分支] [特性分支]
命令会先取出特性分支 develop
master
上重演:
$ git rebase master develop
cherry-pick
用cherry-pick
取出提交,然后将其添加到当前分支上, 你当前处在那个分支上就是放到相应的分支上.
$ git cherry-pick <commit-id>
如果出现冲突,就正常解决冲突, 然后进行重新提交.
什么标签
标签是为了更方便地参考提交而给它标上易懂的名称。Git可以使用2种标签:轻标签和注解标签。打上的标签是固定的,不能像分支那样可以移动位置。
创建标签
使用tag命令来添加标签. 是要创建标签的名称.
$ git tag <tag-name>
还可以根据commit ID创建标签.
$ git tag <tag-name> <commit ID>
显示tag标签信息
如果没有输入要创建标签的名子, 它就会显示现在所有的标签.
$ git tag
如果在log命令添加 –decorate选项执行,可以显示包含标签资料的历史记录。
$ git log --decorate
可以显示从tag
开始的所有提交信息.
$ git log tag-name
可能显示tag
的提交信息和提交的内容及patch
.
$ git show tag-name
checkout 分支
可以根据tag
的标记来进行创建分支.
$ git checkout -b branch-name tag-name
删除标签
若要删除标签,在tag命令指定 -d选项执行。
$ git tag -d <tagname>