在大多数工作中,我们都将使用 Git 作为团队协作开发的工具。
本文总结了图雀团队协作开发的流程与规范,仅供参考。最优的解决方案还是需要结合团队的实际情况,具体问题具体分析。
为了让大家能够非常清晰直观地了解协作开发的流程,大家在看的时候可以打开 Learn Git Branching 的沙箱运行环境来实践(可以直接输入提供的代码)。在左边的终端中输入命令,就会在右边看到相应的动画。其中左边的实线圆圈代表本地仓库,右边的虚线圆圈代表远程仓库,*
号指向的是当前分支,o/master
就是远程分支( o
就相当于 origin
)。
由于 Learn Git Branching 为了演示和学习的方便对部分命令做了简化,我将指出在实际操作中应当输入的命令。
基本流程
接下来将重点讲述以下两个流程:
-
贡献代码
-
更新本地仓库
贡献代码
接下来的流程描述了在接到开发任务后,如何为中心仓库贡献代码。
将仓库 clone 到本地
$ git clone
实际命令应当提供 URI 参数,例如:
$ git clone https://github.com/dhucst/cooperation.git
开启新分支
$ git checkout -b B1
为了便于演示,我们将新分支命名为 B1
。在实际开发中,新分支的命名应当遵循以下原则:
-
使用 kebab-case,例如
new-branch
,而不是new_branch
或newBranch
-
尽量能概括这个分支所要完成的任务
-
如果是为了解决某个 Issue,在最后加上 Issue 的编号,例如
fix-75
编写代码并提交
$ git commit
实际命令应当要先执行
git add
来将修改的文件添加到暂存区,例如:$ git add . $ git commit
Commit Message (Log) 的书写是有比较严格的规范的,会在后文的 提交信息书写规范 中详细阐述。
推送分支
$ git push
实际命令在第一次 push 任何分支时,应当指定 remote 和分支名称:
$ git push origin B1
有时候我们的分支会在一夜之间“过时”。什么是过时的分支,我们该怎样处理?不要方,后面会讲到。
提交 Pull Request
这一步骤无需在 Learn Git Branching 中操作。
将分支提交到远程仓库后,打开仓库的 GitHub 页面,应该会看到下面这样黄色的提示框:
然后点击 Compare & pull request 按钮,即可进入到提交 Pull Request 页面。
填写 Pull Request 标题所遵循的原则与 Commit message 大致相似。在填写 Pull Request 的详细内容时,如果是为了解决某个或多个 Issue 时,可以使用 Close(s)
, Fix(es)
或 Resolve(s)
关键词来关闭某个 Issue,例如 Fix #75
。
点击 Create pull request 按钮后,即可完成本次 PR。如果经讨论后发现需要修改,则在本地仓库修改后直接 git push
继续提交即可。如果代码通过了评审,则会由项目管理者将此分支并入 master 中,本次贡献代码流程结束。
更新本地仓库
接下来的流程介绍了当团队其他成员贡献代码后,如何将远程仓库的更新同步到本地。
如果你在使用 Learn Git Branching 边看边练,请输入以下命令:
$ reset
$ git clone
其他成员贡献代码
$ git fakeTeamwork 2
实际没有这条 Git 命令 😂,是 Learn Git Branching 提供用于练习协作的。
这时候你会发现远程的仓库有了本地没有的提交 C2
和 C3
。
拉取远程代码
我们先来看第一种比较简单的情况:
这时候一眼就可以看出,只需把远程的 C2
和 C3
直接拉取过来接在本地的 C1
后面就可以了:
$ git pull
接着我们来看另一种比较棘手的情况:
需要输入的命令如下:
$ reset
$ git clo