如何为Github开源项目提交PR完整版

1. Fork代码到自己的repository

打开https://github.com/Repo-Name/Project-Name
登录Github账号
点击右上角的Fork
fork
稍等片刻,即可fork一个分支到自己的repository
之后再本地运行

git clone https://github.com/Your-Repo-Name/Project-Name.git

即可将fork出来的repostitory clone到本地

但若你自己的repository还保留有之前fork过的版本,则需要你手工更新fork的版本,才能与原来的版本保持同步

2. 更新Fork版本与最新版同步

这里引用的是来自[1]的回答

git remote add upstream https://github.com/whoever/whatever.git

# Fetch all the branches of that remote into remote-tracking branches,
# such as upstream/master:

git fetch upstream

# Make sure that you're on your master branch:

git checkout master

# Rewrite your master branch so that any commits of yours that
# aren't already in upstream/master are replayed on top of that
# other branch:

git rebase upstream/master

git push -f origin master

3. 本地更改代码并提交

一般分六步:
创建分支;修改代码;git add;git commit;git push;发起PR

  1. git checkout -b 分支名
  2. 修改代码
  3. git add .
  4. git commit -a -m “问题描述”
  5. git push
    此时,git会自动给出提示,告诉你向哪里push,复制粘贴就好
  6. 到Github自己的repository中,点击PR按钮就可以了。其实如果是刚提交,屏幕中会有提示PR的链接,点击该链接就可以了
    pr
    最后,按要求填写PR的相关信息,提交PR,之后就是等待测试通过和开发者的confirm和merge了

注意:提交代码一定要遵循开源项目提供的规范,无论是代码格式、分支/commit信息、还是PR或issue的格式,一定不能少。
比如,

  1. 在修改代码后按规范的要求,在本地测试、代码format等都完成后,再提交。除此之外,要仿照项目 之前的代码风格和注释,不要另搞一套。
  2. 有的开源项目要求commit名是“目录名: 解决问题的描述”,甚至对branch名也有一定要求
  3. 有的开源项目要求签上您的大名,git commit -s “commit message”,如果忘记,bot会提醒你;有的网站会明确表示不要签名,一定要看清楚
  4. 有的网站还会要求先签署协议,一般按照bot提示来做就好
  5. 即使没有明确说明,一个PR最好也只用来解决一个/一类明确的问题,有的项目会限制一个PR中最好只保留一个commit,下面我们来看下怎么合并commit

4. 提交出错了怎么办

即使在线测试出错,不要慌张,点击查看日志,很多其实与你提交的代码无关,只是不过是测试系统或其他代码的bug,开发者那边也会检查确认的。
如果真的是自己的错误,或者开发者有其他要求,需要你修改代码,那么此时本地可能会产生两个甚至更多commit,最好将其合并起来。

git rebase -i HEAD~2

以上命令可以合并最近两个commit
然后在交互式文本编辑器中,
把不想保留的commit从pickup改为squash,然后修改下commit message就可以了

如果仅仅是commit message需要修改,那只要git commit --amend

最后不要忘记

git push -f

强制提交,这样PR就会收到新的commit,然后开始重新测试

5. 大多数开发者是友好的,要始终保持积极的态度

多数开发者会积极回复、沟通。但开发者也有很多难处,可能很久都没能答复,这时请不要着急,耐心等待几周。
比如,开发者刚冻结代码准备发布新版本之类的。越是大的项目,review的时间就越久。当然也有可能是项目年久失修或人手不足,实在等不及的话,再直接向开发者询问。

最后,祝愿大家在为开源项目做贡献的过程中,能够找到自己的乐趣。

[1] https://stackoverflow.com/questions/7244321/how-do-i-update-a-github-forked-repository

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值