git已经是多人协作coding的标配,GitHub上有很多开源项目,由一些人进行维护,还有更多的人为其贡献代码,对某个开源项目贡献代码大概可以分为下面几个步骤:
1,fork一份自己的repo
给开源项目贡献代码并不能直接commit,而是需要先fork到自己的仓库下面,然后提PR(Pull Request),经过各种测试以及code review没有问题之后,开源项目的管理员才会将其merge到代码库中
以terminal为例,直接按一下右上角的fork就可以了
fork之后会在自己的repo下面出现这个仓库,这相当于是一份镜像(注意不会随着fork源的更新而更新)
2,将fork的repo clone到本地,修改代码后push到fork的repo里面
直接git clone到本地
clone到本地之后还需要将fork源添加到remote(通常命名为upstream),及时同步其他贡献者的修改,否则可能会有一堆conflict
git remote add upstream [email protected]:microsoft/terminal.git
在每次开始工作前首先需要同步最新的代码(相当于pull),令upstream与本地的master分支保持一致
git fetch upstream
git checkout master
git merge upstream/master
开始修改代码前,在本地仓库的目录下,根据想要实现的功能创建相应的branch,切换到该分支进行工作
git checkout -b test_branch
代码改完了之后最好先利用diff命令检查下,有没有误操作一些代码
git diff .
如果没有问题则添加该修改,commit之后push到远程分支上
git add .
git commit -m 'add xxx feature'
git push -u origin test_branch
3,为修改的代码提交PR(Pull Request)
修改的代码push到remote之后,在自己的仓库下就会有提示说修改了代码
点进去之后就能看到做了哪些修改,还可以再加上一些备注之类的,然后就可以创建PR了
创建PR之后如果经过code review表示还需要修改,那么直接在本地改完继续push到这个分支即可,会在这个PR下面及时显示出来每次push的commit记录,最后直到被管理员merge为止