使用git直接提交的话,直接
git push
获取最新版本,有两种方法:拉取pull和获取fetch
git pull
从远程拉取最新版本 到本地并自动合并,git pull origin master
git fetch
从远程获取最新版本到本地,不会自动合并,git fetch origin master
实际使用中,使用git fetch
更安全,在合并merge之前可以看清楚更新情况,再决定是否合并。
- git fetch 相当于是从远程获取最新到本地,不会自动merge,如下指令:
git fetch orgin master //将远程仓库的master分支下载到本地当前branch中
git log -p master ..origin/master //比较本地的master分支和origin/master分支的差别
git merge origin/master //进行合并
也可以用以下指令:
git fetch origin master:tmp //从远程仓库master分支获取最新,在本地建立tmp分支
git diff tmp //將當前分支和tmp進行對比
git merge tmp //合并tmp分支到当前分支
- git pull:相当于是从远程获取最新版本并merge到本地
git pull origin master
前者 pull
,后者 fetch
,pull
等于 fetch
+ merge
。
对于后者,“获取”的含义是命令git fetch
,即从远程仓库抓取本地没有的修改;至于前者,大多数情况下,这里“拉取”的含义是git fetch
紧接着一个git merge
,对应git中的命令git pull
,即从远程仓库抓取本地没有的修改并自动合并到远程分支。
由于git pull
的结果有时会让我们看不懂,所以显式地使用fetch和merge命令会比较好一些。当然,对于一些简单的情况,前者git pull
更方便一点。
如果一定要问二者各自的适用情况的话,我觉得很难说,因为这涉及到很多复杂的情况和其他git命令。我觉得大多数情况下,二者的区别就是我前面说的那样。而且,如果你只使用图形化的版本控制系统的话,就很难碰到或处理这些复杂的情况。
用大白话说一下,拉取会把你本地仓库没有 而远程仓库有的更新写到你本地中,而获取的用处更多的是用来查看对于你本地仓库的状态来说远程仓库是否有更新,并不会使你的本地仓库发生改变。