如何fork开源项目并提交PR—实战

4,696 阅读1分钟

fork

fork项目是管理仓库的副本,用于更改项目而不影响原始仓库,可以通过从原始仓库拉取,或者提交更新到原始仓库。

1、在开源仓库fork一个开源项目

开源仓库:github.com,gitee.com

本人选择一个开源的压测工具仓库github.com/rakyll/hey,…

2、本地开发

2.1、将仓库clone到本地

git clone git@github.com:oyjjpp/hey.git

2.2、切一个新的开发分支

git branch -b develop

。。。做一些贡献代码
。。。做一些贡献代码
当前项目一般只有自己仓库的源,当fork开源仓库的源码时,如果要提交PR,首先需要将上游仓库的源配置到本地代码

2.3、将分支push到远程仓库

$ git push origin develop
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 288 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To git@github.com:oyjjpp/hey.git
   f3676ef..d7a9529  develop -> develop

3、为fork项目配置远程仓库

当前项目一般只有自己仓库的源,当fork开源仓库的源码时,如果要提交PR,首先需要将上游仓库的源配置到本地版本控制中,这样既可以提交本地仓库代码到上游仓库,同样可以拉取最新上游仓库代码到本地。

3.1、列出当前项目配置的远程仓库

$ git remote -v
origin  git@github.com:oyjjpp/hey.git (fetch)
origin  git@github.com:oyjjpp/hey.git (push)

3.2、指定fork项目的新远程仓库

git remote add upstream https://github.com/rakyll/hey.git

3.2、验证新的仓库

$ git remote -v
origin  git@github.com:oyjjpp/hey.git (fetch)
origin  git@github.com:oyjjpp/hey.git (push)
upstream        https://github.com/rakyll/hey.git (fetch)
upstream        https://github.com/rakyll/hey.git (push)

3.3、从上游仓库获取最新的代码

ouyangjun@DESKTOP-FV7FFHO MINGW64 /d/golang/hey (master)
$ git fetch upstream
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Total 5 (delta 4), reused 4 (delta 4), pack-reused 1
Unpacking objects: 100% (5/5), done.
From https://github.com/rakyll/hey
 * [new branch]      master     -> upstream/master
 * [new tag]         v0.1.4     -> v0.1.4

3.4、将上游仓库代码merge开发的分支

git merge upstream/master

4、提交PR

指定好源码的分支和自己仓库的分支,然后创建PR,进行提交,接下来就是等待主创团队的同学帮忙合并PR了

参考

使用复刻