什么是fork
fork通常来说,就是copy。例如:某一个团队开发了一个项目ProjectA,并上传到了github上,这时小明看到了该项目,并且很感兴趣,也想贡献自己的一份力量,但是小明并不能直接把自己的修改直接merge进去,于是就出现了fork,小明可以复制一份该项目的代码到自己的github上,这样他就可以在自己的github仓库中修改代码,当修改完代码后,他可以提交pull request(PR),当该团队成员看到了小明的PR,会有专人审核该PR,如果觉得ok,那么就可把小明贡献的代码merge进来,这样就完成了共同协作开发。
fork工作的流程
下面以AVBlog为例来说明:
-
点击smartyuge/ AVBlog项目的fork
image.png -
自己的github中就会出现该项目LuckeX / AVBlog
image.png -
使用git clone把自己仓库中的项目clone到本地
-
在本地添加upstream的地址
image.png
使用git remote add upstream [url]
,其中,upstream是项目url的简称,方便记忆,你可以随便自己起
-
代码贡献
一般开发新功能或者修复bug都会另新建branch来写代码,然后merge进master分支。
git fetch upstream # 取回upstream远程仓库的所有分支
git rebase master # 将取回的分支中的master分支变基到当前分支(我的当前分支是master)
git checkout -b add_features # 使用当前分支来创建新的分支add_features,并切换到该分支
vim Test.md # 这是我修改的,添加了Test.md文件
git add Test.md #添加到暂存区
git commit -m "add Test.md" #commit 一下
git push origin add_features # 把当前commit推送到origin的add_features分支(如果没有该分支,则会创建)
当完成以上时,打开github会出现:
image.png切换到add_features,点击New pull request:
image.png注意:我们是从master分支创建的基础分支,然后修改代码,所以我们的add_features分支对用的是upstream/master。再点击Create pull request就可以提交pr了(通常上图的右边会有reviewer,需要reviewer approve才能merger你的pr)。
- 最后就是删除刚刚创建的本地和远程分支了
git branch -D add_features # 删除本地add_features分支
git push origin :add_features # 删除远程origin仓库add_features分支,因为这相当于把空的分支push到origin/add_features,就是删除啦
网友评论