向开源项目提交Pull Request
向开源项目提交Pull Request
决明Part 1 - Local Repo Config
- 先 Fork 感兴趣项目,即
SwifterSwift/SwifterSwift
- Clone 到本地,
git clone git@github.com:SwifterSwift/SwifterSwift.git
- 添加源项目
SwifterSwift/SwifterSwift
作为upstream
源,https://github.com/SwifterSwift/SwifterSwift.git
- 禁止直接向
upstream
源 push,因为我们不是 SwifterSwift 的人,没有 push 的权限,要提交代码必须通过 Pull Request,git remote set-url --push upstream no_push
- 创建并切换到本地的新分支
bugfix
,git checkout -b bugfix
- 本地分支
master
的作用是与远程upstream
的最新代码同步 - 本地分支
bugfix
则是我们修改代码的战场
- 本地分支
Part 2 - Fix Bug
- fix bug
- 在当前
bugfix
分支提交本地修改,git commit -m "XXXXXXX"
- Check
upstream
源的最新状态- 在本地将
upstream
源的代码更新到最新,git fetch upstream
- 将本地当前分支切换成
master
,git checkout master
- 将
upstream/master
的代码与本地当前默认分支,也就是本地master
分支的代码融合:git merge upstream/master
- 在本地将
- 将本地分支
bugfix
上的修改融合到最新的master
分支上- 将本地当前分支切换成
bugfix
,git checkout -b bugfix
- 将
bugfix
的代码置于已经更新到最新的master
分支的最新代码之后:git rebase master
- 将本地当前分支切换成
- 向 Github 上自己的 fork 项目
wangyuchaogeek/SwifterSwift
的分支origin
提交自己的修改,因为 Pull Request 是将两个 Github 上的 repo 比较,所以一定要将本地的修改先推送到自己的 fork repo 上,git push origin bugfix:bugfix
,参看 Ref. 4git push origin local-name:remote-name
Part 3 - Pull Request
- 提交 issue:描述发现的 Bug,这个可以作为对自己后面 Pull Request 的描述
- 是在自己 Fork 的项目界面,即
wangyuchaogeek/SwifterSwift
的 Pull requests 的 Tab 中点击 New pull request,后面会自动跳到SwifterSwift/SwifterSwift
的界面,如下所示:
Reference
- 查看当前是哪个分支?在工作目录下,
cat .git/HEAD |
- 关于
git rebase
非常好的一篇文章,Merging vs. Rebasing - 向 github 的开源项目提交 PR 的步骤
- GIT: PUSHING TO A REMOTE BRANCH WITH A DIFFERENT NAME
git push <REMOTENAME> <BRANCHNAME>
评论
匿名评论
✅ 你无需删除空行,直接评论以获取最佳展示效果