git pull


用法:

git pull <远程主机名> <远程分支名>:<本地分支名>



常用写法:

1. 全路径

git pull origin master:master


取回远程主机的master分支 与本地的master分支合并



2.省略本地分支

git pull origin master


取回远程主机名origin的master分支, 并与本地的当前分支合并


实质上,这等同于先做git fetch,再做git merge

git fetch origin

git merge origin/master



3. 省略远程分支名


在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动"追踪"origin/master分支。

Git也允许手动建立追踪关系。


git branch --set-upstream dev origin/dev

上面命令指定dev分支追踪origin/dev分支。

如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。


$ git pull origin

上面命令表示,本地的当前分支自动与对应的origin主机"追踪分支"(remote-tracking branch)进行合并。



4. 省略主机名

如果当前分支只有一个追踪分支,连远程主机名都可以省略。

git pull





git push


用法:

git push <远程主机名> <本地分支名>:<远程分支名>


将<本地的分支> 推送到 <远程主机名> 的远程分支



常用写法: 


1. 省略远程分支

git push origin master


将本地的master分支推送到远程主机名origin 的master分支(如果不存在则创建)



2. 省略本地分支

git push origin :master

将本地一个空分支送到远程的maser分支,实际就是删除远程分支 等同于git push origin --delete master




3.省略本地分支和远程分支

git push origin  

如果本地分支和远程分支之间存在追踪关系,则本地分支和远程分支都可以省略

(如果报错,则可能需要建立追踪关系   git push --set-upstream origin dev)


留一下一个疑问:如何查看 这个中追踪关系呢? git remote show origin (查看远程主机的详情)



4 省略远程主机名


git push

只和一个远程主机名关联 如:origin

如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。


$ git push -u origin master

上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。

不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。


git config --global push.default simple