git pull
pull操作相当于先做了fetch操作,然后紧接着做了git merge
的操作。它会先从 .git/config
中查找本地当前所在分支对应的远程分支配置,比如:
[branch "master"]
remote = origin
merge = refs/heads/master
一般经常使用3种格式:
- 第一种,默认操作
git pull
此时会把master分支拉下来并与当前分支进行 merge
操作,可以通过指定 --rebase
选择rebase合并操作。
- 第二种,rebase合并
git pull --rebase
如果当前分支在 .git/config
该文件中的配置不存在,那么必须指定对应的远程分支名进行pull操作,否则会报错:
您要求从远程 'origin' 拉取,但是未指定一个分支。因为这不是当前
分支默认的远程仓库,您必须在命令行中指定一个分支名。
- 第三种,从某个分支pull下来
这个命令会忽略分支的对应跟踪关系,而是从指定的分支pull到当前所在分支上:
git pull origin test_branch
git fetch
fetch操作会把远程仓库拉到本地仓库中来,默认包括所有远程仓库中的远程分支全都拉取到本地。默认这些分支并不会被checkout到工作区,当然通过一些参数可以指定是否要checkout出来。
它常用的操作如下:
- fetch整个仓库
这个命令会更新仓库中所有分支
$ git fetch origin
- fetch指定远程分支
单独更新仓库中的某一个分支
$ git fetch origin master
- fetch指定分支并checkout到本地分支
比如想要fetch远程仓库中的master分支,并checkout到本地分支tmp上,可以使用如下命令:
$ git fetch origin master:tmp
一般在项目中我会经常使用这样的操作:
git fetch origin master
先把远程仓库中的master分支更新下来,然后执行rebase操作,更新到工作区:
git rebase origin/master
这样保证了我们的提交是线性关系的,而不是merge形成的交叉关系。关于rebase和merge的提交介绍,后续再其他文章介绍。
欢迎扫码关注我的公众号!