### 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`。