### GIT的PUSH指令
```
$ git push <远程主机名> <本地分支名>:<远程分支名>
```
* `git push`命令用于将本地分支的更新,推送到远程主机。
* 如果省略远程分支名,则表示将本地分支推送到与之对应的远程分支(通常两者同名),如果该远程分支不存在,则会被创建。
```
$ git push origin master
```
* 上面的命令表示,将本地的`master`分支推送到`origin`主机的`master`分支,如果后者不存在,则会被创建。
```
$ git push origin :master
$ git push origin --delete master
```
* 上面两个命令等价,表示删除`origin`主机的`master`分支。
* 如果省略本地分支名,则表示删除制定的远程分支,因为这等同于推送一个空的本地分支到远程分支。
```
$ git push origin
```
* 上面的命令表示,将当前分支推送到`origin`主机的对应分支。
* 如果当前分支与远程分支之间存在追踪关系,则本地分支名和远程分支名都可以省略。
```
$ git push
```
* 上面的命令表示,将当前分支推送到它的对应分支。
* 如果当前分支只与一个主机存在追踪关系,则主机名可以省略。
```
$ git push -u origin master
```
* 上面的命令表示,使用`-u`参数指定`origin`为默认主机。
* 如果当前分支与多个主机存在追踪关系,则可以指定一个默认主机,这样在后面就可以直接使用`git push`。
```
$ git config --global push.default matching
$ git config --global push.defualt simple
```
* 上面的命令表示,使用`git config`修改当前`git push`的默认方式。
* 不带任何参数的`git push`,默认只推送当前分支,这叫做**simple**方式。此外,还有一种**matching**方式,推送所有存在与之对应的远程分支的本地分支。**Git 2.0**版本之前,默认采用**matching**方式,现在改为默认采用**simple**方式。如果要修改这个设置,可以使用`git config`命令。
```
$ git push --all origin
```
* 上面的命令表示,使用`--all`参数,将所有本地分支都推送到`origin`主机,不管是否存在与之对应的远程分支。
```
$ git push origin --tags
```
* 上面的命令表示,使用`--tags`参数,将所有本地`tag`都推送到`origin`主机。
* `git push`不会推送`tag`,需要使用`--tags`参数,推送本地所有`tag`,或者指定推送某一个`tag`。