【git】日常工作流程
前言
本文为使用git
+sourcetree
进行日常开发版本控制与多人协作的日常工作流程简介。当然在实际工作中多少会与本文所述有所冲突,但大同小异,其基本流程变化不大,希望读者自行掌控细节。
另外,对于美术资源,由于git
对加锁没有比较好的支持,更科举的做法是使用perforce(p4v)
,详见perforce官网下载。但是对于人数不多的小型项目,使用git
使可满足绝大多数需求,故本文并没提及p4v
,希望有需求的读者可自行研究。
安装
在正式开始之前需要安装以下软件。
安装git
git的安装过程见笔者的另外一篇blog,git安装与配置
安装sourcetree
sourcetree
直接从sourcetree官网下载安装包安装即可。
安装完成后打开sourcetree
,我们可以在工具->选项
菜单下设置默认的用户名和邮箱(很重要)。

当然,针对某个具体的仓库,我们也可以设置局部的用户名。

建立仓库
建立仓库一般是开发人员进行的操作,其他角色可跳过此步骤。
这里以github
为例,其他的平台大同小异。

如上图所示,最好选中初始化一个README.md
。
拉取远程仓库
打开sourcetree
,在New Tab
页面的Clone
,输入远程仓库的路径,并选好本地的存储路径,按克隆按钮即可。

除此之外,也可以使用命令行直接拉取。
1 | git remote add origin xxx.git |
之后再在sourcetree
中导入拉取到本地的仓库,我们可以打开sourcetree
,在New Tab
页面选择Add
,选好路径,即可导入仓库。

导入仓库完成后,sourcetree
出现如下界面,可以看到,目前只有一个master
分支。

注意此时别忘了修改一下当前仓库的用户名和邮箱,步骤见上面sourcetree
安装过程。
初始分支管理
我们使用master
分支作为产品发布分支,这个时候我们需要新建一个develop
分支作为开发分支。

如图所示,我们在当前master
的最新提交上右键
,选择分支
,出现下图。

输入分支名develop
,点击创建分支按钮即可。当develop
分支创建好之后,便可看到本地多了一个分支,且已检出到该分支。但是远程分支还只有一个。

此时我们需要推送develop
分支到远程仓库,如图,点击推送
按钮,勾选develop
分支并推送即可。

在个人分支工作
对于项目小组的每一位成员,建议的做法是每一个人建立一个自己的工作分支或者特性分支,当此次工作完成之后,便将该分支合并到主干分支(即develop
分支)上去便可。
创建个人工作分支
首先需要更新主干分支到最新。如图所示,检出develop
分支(双击,加粗即为当前已经检出的分支),点击拉取
按钮。

在主干分支最新的提交上右键,选择分支
选项新建一个分支。

分支推荐按照如下格式命名。
个人分支 -- p_personname_date -- p_duadua_20190819
特性分支 -- f_xxx_personname_date -- f_animation_duadua_20190819
bug分支 -- h_xxx_personname_date -- h_fixbug_duadua_20190819
创建完分支后,便可以本地分支列表中看到,此时执行一次推送,即可推送到远程分支。

接下来便可在个人分支下进行工作,像正常的git流程一样工作即可。
工作完成测试
当在个人分支完成修改之后,需要测试当前的修改是否能运行最新的版本,所以需要将最新的develop
分支合并过来,然后进行测试。
首先我们需要像之前介绍的那样将develop
分支拉取到最新,然后检出个人分支,并在develop
分支上右键,选择合并develop至当前分支
,便可将develop
分支合并过来。

此时进行运行测试,功能没有问题的话便可对当前分支进行提交并推送到远程,然后请求合并即可。
但是这一步很有可以会出现冲突,可能最新的develop
版本上有与你当前修改冲突的文件,所以在合并develop
到当前分支之后需要解决冲突,解决冲突的方法可联系项目的开发人员。
合并请求
当前工作测试完成之后,便可合入主干,此时需要在git平台(此处假设为github
)上请求merge request
,即mr
。
打开github
上我们项目所在的页面,并切换到我们的个人分支。如下图所示。

然后选择New pull request
,便会打开一个新的mr
请求,跳转到如下页面。选择要合入的分支develop
,填写好log,即可点击create pull request
按钮。

注意,可在该页面最下方看到此次mr
具体修改了哪些文件,在mr
之前最好检查一遍,防止误提交或漏提交。
之后管理人员便可对mr
请求进行commit
,才真正将个人工作的内容合入主干分支。
合入主干后,临时的分支,如bug分支
,或某个短期的特性分支,便可以删除了。