我理解的git fork:将别人(张三)仓库包括文件,提交历史,issues等复制一份到自己的github账号下。我们在可以通过修改本地项目的代码,然后,给(张三)发送一个Merge Request,一旦他(张三)同意,那么自己的修改就提交到了他(张三)的仓库。
之前,公司使用最多的是直接git clone公司的仓库,下载到本地后,修改提交到仓库,也就是下图的2、3、4步。但是,有的时候公司并不想让你自己去直接操作公司的仓库。那么,我们需要fork一份公司的到自己的账号下,然后,clone自己账号下的仓库到本地。
使用流程如下:
想要顺利的实现代码的拉取与提交,需要进行一些相应的配置:
1、在github中点击要fork的仓库
原始仓库地址:https://git.zhangsan.com/project
然后回到自己的账号就可以在下边看到fork到的项目了。
自己仓库的地址:https://git.your.com/project
2、将自己仓库的项目clone到本地
git clone https://git.your.com/project.git
3、进入到自己的项目目录
cd project
4、查看远端的源
git remote -v
# 这时候回车显示的应该是这样的
origin https://git.xxx.com/your/project.git (fetch)
origin https://git.xxx.com/your/project.git (push)
5、设置upstream地址
git remote add upstream https://git.zhangsan.com/project.git
# 再次查看源
git remote -v
# 现在应该显示这样
origin https://git.xxx.com/your/project.git (fetch)
origin https://git.xxx.com/your/project.git (push)
upstream https://git.zhangsan.com/project.git (fetch)
upstream https://git.zhangsan.com/project.git (push)
至此,配置操作就完成了。
现在,我们想要做一些开发了,我们的Sourcetree会展示一个origin和一个upstream的源
我们从origin仓库中拉取相应的分支进行开发,当开发完毕后,我们需要先拉取远端的代码到本地然后再提交(防止远端发生变化,这个时候直接提交会有冲突)。
我们需要先push到origin仓库,然后通过GitHub的网页发起一个Merge Request。需要注意request的From和into地址。
提交request请求后,就等code review后合并到远端仓库了。