之前写过一篇文章,总结了2021年自己参与过的开源项目和经验总结。但仅仅记了一些流水账,没有收拾过具体的操作流程。正巧,最近在看一个 Github 项目 (github.com/leerob/leer…),在里面发现了一个小问题。遵从 GitHub 官方推荐的基本协作流程,给项目提交了 issue 和 PR (Pull Request)。过了两天,作者给了我反应,并兼并 (merge) 了我的提交恳求 (PR)。借这个时机,根据 GitHub Docs 供给的开源项目协作流程,并结合本次实践阅历,总结了一下经过 GitHub 进行项目协作的完好流程。这个流程不只适用于个人提交开源奉献,也适用于公司或团队内部之间的 Git 项目协作。

GitHub 官方项目协作流程收拾

1. 找项目 (Finding projects)

这个很简单,确认目标项目,这儿是:

友情提示: 1. 做开源奉献之前,能够先看看有没有人在 issue 和 PR 中,有没有人现已提出过与你观点相同和相近的反应定见或修正提交。留意作者是怎样回复的,避免浪费自己时刻。

如果是一些小问题,并且自己时刻有限,能够先提一个 issue,提醒作者自己或许其他人处理,如果没有人回应,再测验自己提交 PR。这儿我先提了一个 issue,github.com/leerob/leer…

如何在 Github 上规范的提交 PR(图文详解)

2. 派生一个存储库 (Forking a repository)

进入 github.com/leerob/leer… 项目主页,点击 Fork 按钮,创立一个新的派生项目(Create a new fork)

如何在 Github 上规范的提交 PR(图文详解)

再点击 Create fork 按钮,创立派生项目到自己的作业区。

如何在 Github 上规范的提交 PR(图文详解)

3. 克隆一个派生 (Cloning a fork)

进入自己的 Github 作业区,将派生项目克隆到本地(或许远端服务器),详见 docs.github.com/en/get-star…

# 克隆项目到本地(留意是派生项目的链接,不是原始项目)
git clone git@github.com:shenlu89/leerob.io.git

4. 创立一个分支 (Creating a branch)

# 创立并切换到本地新分支,分支的命名尽量简练,并与处理的问题相关
git checkout -b delete-unused-link

5. 做出修正 (Make changes)

删除一行无用的代码,import Link from ‘next/link’

如何在 Github 上规范的提交 PR(图文详解)

6. 提交修正 (Pushing changes)

这步需求留意一下,有些项目更新的会比较频频。当你做出修正和提交 PR 之前,可能有作者新的提交和 PR 被兼并到原项目。如果有这种状况发生,在你作业区的派生项目会显示原项目有更新。例如:

如何在 Github 上规范的提交 PR(图文详解)

点击 Update branch 之后,将原项目(github.com/leerob/leer…)更新同步到派生项目(github.com/shenlu89/le…)。再进入本地项目文件夹

# 当时文件夹方位 leerob.io
# 保存本地修正并将作业目录复原到当时HEAD提交状况
git stash
# 从远程拉取最新的项目代码,将派生项目更新同步到本地
git pull
# 将保存的修正复原回当时作业目录
git stash pop

查看更新后的内容是否和本地修正有抵触,如果有就处理抵触,完成后就能够提交修正了

# 当时文件夹方位 leerob.io
# 保存本地修正并将作业目录复原到当时HEAD提交状况
git commit -am 'Delete unused Link declaration'  
# 推到派生项目远端仓库,由于之前项目分支是在本地创立的,需求带上 '--set-upstream'
git push --set-upstream origin delete-unused-link

7. 创立兼并恳求 (Create a pull request)

回到线上派生项目的作业区,会看到新分支和修正的兼并提交信息,点击Compare & pull request

如何在 Github 上规范的提交 PR(图文详解)

挑选你想并入的原项目分支,标题和描绘信息。如果有对应的 issue,就经过键入 # 添加(Github 会主动展现 issues 列表)

如何在 Github 上规范的提交 PR(图文详解)

点击 Create pull request ,就行了。结果如下:

如何在 Github 上规范的提交 PR(图文详解)

8. 宣布评论 (Address review comments)

这部分是原项目作者需求遵从的标准,Lee Robinson 也给了一个礼貌性的回复

如何在 Github 上规范的提交 PR(图文详解)

9. 兼并你的恳求 (Merge your pull request)

这是原项目作者要做的,现已展现过了,不再赘述。

10. 删除你的分支 (Delete your branch)

最后一步不是必须的,仅仅坚持一个标准的开源协作习气,减少意外提交错误项目分支的状况发生。

来到原项目 Github 主页,找到之前现已兼并的提交恳求(在关闭的 PR 列表中),点击 Delete branch

如何在 Github 上规范的提交 PR(图文详解)

# 删除本地分支
git branch -d delete-unused-link

留意:下次在已有的派生项目创立新分支前,要先将原项目的更新同步到派生项目,并将更新后的派生项目拉到(git pull)本地,再从头建立分支(git checkout -b new-branch-name ),再重复上述进程即可。

Github 官网对协作流程方面写很清楚,但阐述逻辑上有点紊乱,并且没有中文版。有人可能会问,GitHub Docs 供给多言语拜访,并且是开源的,为什么中文版有些部分没有翻译完好?详见github.com/github/docs… 如下:

如何在 Github 上规范的提交 PR(图文详解)

所以,GitHub Docs 其他言语的官方翻译会滞后于英文版,由于其他言语版别不接受内容奉献(这是 Github 官方在准确度和效率之间做的一个平衡)。如果 GitHub Docs 中没有供给契合你阅读习气的言语版别,只能发信催 Github 官方尽快供给相关言语版别。

避坑提醒: 1. 给 GitHub Docs 提交内容翻译 PR 通常是不会经过的。这儿官方说的很清楚了,不接受翻译内容奉献。 2. 如果发现英文原文内容有问题(语法,语义,词法),这个是能够提交修正定见 (Issue) 和兼并恳求 (Pull Request) 的(其他言语的版别也都是经过英文版别翻译过来的)。但也要基于原文内容修正,自己独立创造的内容兼并恳求很难被 Github 官方经过。

下面是参阅的相关 Github 官方文档:

  • GitHub flow
  • Contributing to projects
  • Basic writing and formatting syntax
  • Linking a pull request to an issue