Skip to content

ein-plus/git-workflow-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

Git Workflow Example

本项目用于练习和熟悉我司的协同开发流程

Fork

点击右上方的 Fork 按钮,将本项目 fork 到您的个人帐号下

Clone 并配置上游仓库

请在本地执行下面的命令(假设您的 Github 用户名为 gomez

git clone git@github.com:gomez/git-workflow-example

这将会在您的本地创建一个 git-workflow-example 的目录,该目录中包含本仓库的所有内容

同时请配置好上游仓库,执行如下命令

cd git-workflow-example
git remote add upstream git@github.com:ein-plus/git-workflow-example

一个完整的开发流程

Git Workflow

同步上游仓库代码

如非必要,不要在 master 分支提交代码,而是靠 master 分支来同步上游仓库的代码,进入项目目录后,执行如下命令

git checkout master       # 切换到 master 分支
git pull upstream master  # 将上游仓库的 master 分支的代码,拉取并同步到本地的 master 分支

创建或切换到非 master 分支

如非必要,请一直在非 master 分支提交你的个人修改,以下是一个示例

git checkout master     # 首先切换到 master 分支
git checkout -b dev     # 从 master 分支中,创建一个 dev 分支,该分支的起点和 master 是一样的

创建了新的分支后,就可以进行开发、修改、提交了,如:

vim fizzbuzz.py      # 新建 fizzbuzz.py 并进行开发,完成后保存退出
git add fizzbuzz.py  # 将 fizzbuzz.py 的改动添加到缓存区
git commit -m "implemented `FizzBuzz`"  # 确认无误后将改动正式提交到本地仓库中

提交代码到 Github

开发完成后,即可将代码提交到 Github,但在执行 git push 前,请重复第一步「同步上游仓库代码」—— 在你进行修改的同时,有可能有其他人也做了修改并已经提交,我们必须保证我们的代码是基于最新的代码来进行修改的。

git checkout master
git pull upstream master

同步完 master 分支后,我们同时需要更新我们的 dev 分支,将 master 分支的新的改动合并进来,这个有两种方式

  1. 使用 git merge 来合并 master 分支的改动
git checkout dev    # 从 master 分支切换回开发分支
git merge master    # 将 master 分支的新代码合并到当前分支

merge 的过程中可能会有冲突,请小心处理并解决。

  1. 使用 git rebase 来将 dev 分支的起点移动到 master 分支的最新版本
git checkout dev    # 从 master 分支切换回开发分支
git rebase master   # 移动当前分支的起点到 master 分支的最新版本

rebase 的过程中可能会有冲突,请小心处理并解决。

上述同步上游仓库的过程较繁琐且易出错,但我们希望您能严格遵循这个过程。

在同步完上游仓库的代码后,我们就可以把我们开发分支的代码推送到 Github

git push origin dev   # 将当前分支的代码推送到 Github 仓库的 dev 分支

提交 Pull Request(PR)

上一步提交更改后,我们只是把新的修改推送到了 个人帐号 的仓库中,如果希望我们的改动能被别人使用,我们还需要将这些改动合并到上游仓库,也就是用户 ein-plus 的仓库中去。这个过程是通过 GithubPull Request 来实现的,请按以下步骤进行:

  1. 进入上游仓库的 Github 页面,如:https://github.com/ein-plus/git-workflow-example/

  2. 点击页面上的 New Pull Request 按钮,并选择 compare across forks,在右侧选择自己帐号下的仓库和对应的分支

如下图所示

New Pull Request

Code Review

提交 PR 后,即可在 PR 页面,请求相关人员对这个 PR 进行 review,所谓的 review,包括提出改进意见、讨论实现细节等。以下都是可行的方式

  1. 在 PR 页面右侧的「Reviewers」中添加相关的 Github 用户,他们将会收到邮件通知

  2. 在 PR 页面的评论中 @ 相关 Github 用户

  3. 在 BearyChat(我们的 IM 工具) 中 @ 相关的用户,希望他人尽快 review 自己的 PR 时可采用这种方式

  4. 在办公室中找到相关人员,要求对方进行 review,希望他人尽快 review 自己的 PR,且对方对上述三种方式都无响应时可采用这种方式

在 review 的过程中,别人提出意见后,我们可以做对应的修改,这些修改继续推送到对应的开发分支(如之前的 dev)即可, 不需要重新提交 Pull Request,只要 PR 没有被接受,该 PR 将会持续追踪我们的开发分支,并将新的改动展示出来。

经 reviewer 确认后,PR 可以被合并,至此,一个完整的流程结束。

请在 Code Review 中注意

  1. 讨论是公开、公平的,不存在谁指导谁的问题,review 是为了保证代码的公开透明及代码规范、代码效率,请对事不对人

  2. 作为 reviewer,请仔细阅读 PR,如果有不符合公共规范的请务必指出;如果觉得在规范、效率各方面都符合要求,那么请及时确认 —— 在 review 中点击 Approve 或者在 PR 页面中通过评论来告知

  3. 作为提交代码者,请虚心接受别人的合理建议,并及时作出更改

  4. 作为提交代码者,如非必要,请不要自己合并自己的 PR

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •