Fork和Clone的区别
fork
在GitHub页面,点击Fork按钮。其实就是将别人的repository拷贝一份到自己的GitHub账户中clone
将GitHub中的repository克隆到自己本地电脑中
Pull Request的作用
在repository的创建者没有把我添加为项目合作者的前提下,我将他的某个repository“B”clone到自己的电脑中,在自己的电脑进行修改,但是我会发现我没办法通过push将代码贡献到B中。所以要想将我的代码贡献到B中,我首先需要对他的的repository B 进行Fork,然后在这个Fork版本上做工作,然后进行pull request ,请求创建者审查自己的工作,并由它决定要不要接受你的代码。
Fork + Pull Request 整个流程
- 先fork别人的repository,此步骤其实就是将其拷贝一份到自己的GitHub账户中;
点击fork按钮,此时变会在你的仓库中多出一个仓库,名字为:自己的账户名/fork的仓库名称
- 将自己账户中的拷贝版本clone到本地,新建/切换到特性分支,然后在其中做相应的工作,然后添加、提交修改,
clone后cd到克隆的文件夹(如workfile/),进入你期望的分支中,比如我希望进入dev1分支而不是默认的master分支中,那首先需要对党建分支进行切换,使用命令
git checkout dev1
,然后我在拉取该分支上的最新内容,通过pull就可以将对方仓库里该分支的内容拷贝到workfile文件夹中:git pull origin dev1
,获取了分支内容后,在创建我自己的名为my_dev的新分支:git checkout -b my_dev
。最后,经过添加、提交之后,需要上传到我自己创建的分支,即my_dev:git push origin my_dev
.
- 创建PR (Pull Request)
进入到自己的github账户下,并切换到创建的特性分支下,然后点击create pull request后,确定没问题,填写相关内容,然后点击send pull request。
尽量在comment中清楚地阐述自己做了什么工作。
PR之后,如果想修改自己之前的提交怎么办?
- 如果你的PR没有被Merge,那么你直接在本地的分支当中修改然后提交就可以了。git commit + git push。
这是需要注意的一点:从A向B提PR后,在PR合并或关闭之前,A上所有新增的提交都会出现在PR里!所以提交PR后,没事别随便push了!别人都能看到!!!
- 如果你的PR已经被合并了,那就只能再提交一个新的PR。
私有项目无法Fork和Pull Request
私有项目只有项目组内成员才可以查看,组内成员都对这个项目有push权限的,所以其实就没有必要Fork和Pull Request了,Fork后还比较难以同源项目保持同步。
如果真的需要别人给你Pull Request,应该使用公有项目而不是私有的。