前言
为开源项目提交Pull Request,成为一名开源项目贡献者。本文将以开源项目 go 为例展开整个流程。末尾仅以截图做为纪念,希望以此激励自己;亦希望大家都能够为开源项目奉献自己的力量。
流程
golang项目有两种提交pr的方式
- Gerrit(详情参考 go.dev/doc/contrib… )
- 创建用于提交pr的gmail账号。
- 签署并提交 贡献者许可协议 。可选择个人或者公司的身份进行签署。
- 为 Go Git 存储库配置身份验证凭据。访问 go.googlesource.com。点击 Generate Password,进行相关操作。
- 通过 go-review.googlesource.com注册 Go 团队使用的代码审查工具 Gerrit。
git-codereview通过运行 安装go install golang.org/x/review/git-codereview@latest
- Github (简要步骤如下,具体参考: go.dev/doc/contrib…)
- 使用gmail账号签署 贡献者许可协议,后续提交亦需要使用该账号进行Pull Request
- fork go 项目到自己的github仓库。
- git clone fork的repo到本地进行修改(因为没有golang项目的权限,需要通过fork修改,然后提交到golang repo)
- git remote -v
- git remote add upstream git@github.com:golang/go.git 关联源repo的远程分支[1]
- git checkout -b branchname 创建本地修改分支
- git add 指定修改文件
- git commit -m "commit 内容"
- git push --set-upstream origin branchname
- 到源repo提交Pull Request
[1]: 为何使用git remote add upstream 而不使用git remote add origin(origin与upstream的区别)
fork 源于github上的概念,区别于正常的git clone,相当于在服务端进行一次git clone。
从github上clone一个repo到本地时,非该repo的contributor不可以向该repo进行pull request,此时,该远程repo对于本地的repo而言就是upstream。故需要进行git remote add upstream[2]。
从github上fork一个repo之后,将自属的forked repo clone到本地之后,可以随意进行该forked repo的pull request,此时远程的forked repo就是origin。即属于自己的repo(自己创建的或者fork的repo)可以进行任意权限操作。
[2]: 使用git remote add upstream,从而保证本地的repo与源repo保持同步,仅能进行git fetch同步最新代码。关联之后可通过pull request 向upstream repo贡献代码。
github pull request
gerrit go-review
date:2023/1/17
Review-Enforcement
update date:2023/1/20