Github 是一个家喻户晓的代码托管平台,对于大部分编程爱好者,下载项目源码和备份项目源码应该是最常用的功能。
今天我们来介绍另一个重要的使用场景:贡献代码。
以 swoole 为例,步骤如下。
1 Fork 项目
- 首先需要 fork 这个项目,进入项目页面,点击右上角的Fork按钮。
- 然后,你的 github 仓库中会多了 swoole/swoole-src 项目。
- 在本地电脑上使用以下命令,得到一个 swoole-src 文件夹
git clone git@github.com:samt42/swoole-src.git
2 获取最新代码
- 进入 swoole-src 文件夹,添加 swoole 的远程地址
git remote add upstream https://github.com/swoole/swoole-src.git
- 获取 swoole 最新源码
git pull upstream master
现在,fork 来的 master 主分支就作为跟踪 upstream 远程代码,用以同步 swoole 的最新代码。
3 创建分支
好了,现在可以开始贡献我们的代码了。按照国际惯例,一般不在 master 上提交新代码,而需要为新增的功能或者fixbug建立新分支,再合并到 master 上。
- 使用以下代码创建分支:
git checkout -b branch1
然后在分支上更改代码。
- 假设我们已经添加了一些代码,提交到代码库:
git commit -a -m "new commit"
4 合并修改
此时,可能会遇到一个问题,即远程的 upstream (swoole/swoole-src) 有了新的更新,导致我们提交的 Pull Request 引起了冲突。因此,我们可以在提交前,先把远程其他开发者的commit
和我们的commit
合并。
- 切换到 master 分支:
git checkout master
- 再
pull
远程的最新代码:git pull upstream master
- 切换回 branch1:
git checkout branch1
说明:如果忘记自己之前建的分支名可以用
git branch
查看。 - 把 master 的 commit 合并到 branch1分支:
git rebase master
- 把更新代码提交到自己远程仓库的 branch1 分支中:
git push origin branch1
5 Pull Request
- 提交 Pull Request
在的 github 代码仓库,切换到 branches 页面,点击 branch1 分支,然后点击New pull request
按钮,添加注释后提交。
或者
切换到 branch1 分支的代码仓库,点击Compare & pull request
按钮,添加注释后提交。
参考资料: