Git学习笔记:fork和clone的区别,fetch与pull的区别
本文转自:http://blog.sina.com.cn/s/blog_4a0824490102wf5y.html 作者:ccpacer
fork:在github页面,点击fork按钮。将别人的仓库复制一份到自己的仓库。
clone:将github中的仓库克隆到自己本地电脑中
问题:pull request的作用
比如在仓库的主人(A)没有把我们添加为项目合作者的前提下,我们将A的某个仓库名为“a”的仓库clone到自己的电脑中,在自己的电脑进行修改,但是我们会发现我们没办法通过push将代码贡献到B中。
所以要想将你的代码贡献到B中,我们应该:
- 在A的仓库中fork项目a (此时我们自己的github就有一个一模一样的仓库a,但是URL不同)
- 将我们修改的代码push到自己github中的仓库B中
- pull request ,主人就会收到请求,并决定要不要接受你的代码
- 也可以可以申请为项目a的contributor,这样可以直接push
1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge
git fetch origin master
git log -p master..origin/master
git merge origin/master
以上命令的含义:
首先从远程的origin的master主分支下载最新的版本到origin/master分支上
然后比较本地的master分支和origin/master分支的差别
最后进行合并
上述过程其实可以用以下更清晰的方式来进行:
git fetch origin master:tmp
git diff tmp
git merge tmp
从远程获取最新的版本到本地的test分支上
之后再进行比较合并
2. git pull:相当于是从远程获取最新版本并merge到本地
git pull origin master
上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并