之前写过一篇文章,总结了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…
2. 派生一个存储库 (Forking a repository)
进入 github.com/leerob/leer… 项目主页,点击 Fork 按钮,创立一个新的派生项目(Create a new fork)
再点击 Create fork 按钮,创立派生项目到自己的作业区。
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’
6. 提交修正 (Pushing changes)
这步需求留意一下,有些项目更新的会比较频频。当你做出修正和提交 PR 之前,可能有作者新的提交和 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
挑选你想并入的原项目分支,标题和描绘信息。如果有对应的 issue,就经过键入 # 添加(Github 会主动展现 issues 列表)
点击 Create pull request ,就行了。结果如下:
8. 宣布评论 (Address review comments)
这部分是原项目作者需求遵从的标准,Lee Robinson 也给了一个礼貌性的回复
9. 兼并你的恳求 (Merge your pull request)
这是原项目作者要做的,现已展现过了,不再赘述。
10. 删除你的分支 (Delete your branch)
最后一步不是必须的,仅仅坚持一个标准的开源协作习气,减少意外提交错误项目分支的状况发生。
来到原项目 Github 主页,找到之前现已兼并的提交恳求(在关闭的 PR 列表中),点击 Delete branch
# 删除本地分支
git branch -d delete-unused-link
留意:下次在已有的派生项目创立新分支前,要先将原项目的更新同步到派生项目,并将更新后的派生项目拉到(git pull)本地,再从头建立分支(git checkout -b new-branch-name ),再重复上述进程即可。
Github 官网对协作流程方面写很清楚,但阐述逻辑上有点紊乱,并且没有中文版。有人可能会问,GitHub Docs 供给多言语拜访,并且是开源的,为什么中文版有些部分没有翻译完好?详见github.com/github/docs… 如下:
所以,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