为开源项目持续贡献的最佳实践
本篇文章主要讲述为开源项目做贡献的流程与仓库管理方法,希望能够为刚刚接触开源的同学节省时间与经历。同时,本流程也适用于团队之间的协作。
这个暑假我通过OSPP接触到了Pycasbin社区,也成为了Pycasbin的maintainer,在刚开始提交pr的时候走了不少弯路,由此写下这篇文章希望能够帮到阅读到本篇文章的你。
开始之前
在开始之前,你应该对git与github有初步的了解,同时,你也可以安装Fork,它是一个可视化操作git的软件,对于处理一些复杂的情况十分有用。
贡献流程
fork与新建branch
当你决定好要为项目做出贡献时,首先你应该fork一个自己的仓库,方便对其进行修改,fork在github项目页面的右上角。
完成之后,页面会自动跳转到你属于你自己的fork仓库,这时将代码clone到本地。同时为其新建一个branch。如果你想要为项目贡献的是一个新的feature的话,建议将branch命名为feat/your-feature
,如果是修复bug,可以命名为fix/bug-to-be-fixed
。
1 |
|
如果你只是打算做一次性贡献,可以直接在fork仓库的master分支下进行修改。若打算进行持续贡献,良好的分支管理可以为之后的工作省去很多麻烦。
fork的项目默认不会开启github action,如果项目有配置github workflow,需要你在fork仓库的action tab下手动打开。我会建议你开启action,这样可以保证在提交pr前可以通过大部分check,减少后续沟通成本。
发起pull request
当完成代码的修改并push到远程仓库后,下一步即发起pull request. 在发起pr前,你需要检查当前仓库是否与源仓库保持一致,如果此时源仓库有新的commit时,需要同步当前的fork仓库,点击sync fork
并按照提示操作即可。保证与源仓库同步后,点击contribute
即可发起pr
填写相应的pr信息并发起pr。标题请遵循你需要贡献的仓库规范。主体内容阐述清楚进行了哪些修改。
至此,在pr页面确保自己的代码通过了所有检查,等待owner review与并入主仓库即可!
Some tips
如何修改上一次的commit?
我们经常会遇到需要对已经提交的代码进行一些微小的改动(尤其常见于格式规范,如为py文件的末尾添加空行等),这时多添加一条commit信息显得有些多余,git amend可以在这里派上用场。使用amend可以修改上一次commit的信息。
1 |
|
如果你已经把上一次commit push到远程仓库,你可以使用git push --force-with-lease
来强制修改远程仓库。注意,如果你使用jetbrain系列IDE并勾选Amend进行commit and push时,一般会提示你权限不足。正确的操作应该是在对本地仓库amend commit并在命令行中进行强制push。
你只应该对还未合并到master分支且只有自己负责的branch进行amend操作,否则这会打乱历史commit信息并给其他合作者带来困扰。
我如何对已经提交pr的代码进行修改?
按照正常流程push新commit即可,pr会自动更新新提交的代码。