#### 简介

使用本地refs来更新远程refs

#### 语法

```
git push [选项] [<repository> [<refspec>...]]
	# <repository>是远程仓库。它可以是远程仓库的URL，也可以是远程仓库的名称。
	# <refspec>...则指定本地对象更新哪个远程引用，其格式为[+]<src>:<dst>
	  # <src>通常是本地分支名称，但也可以是一个SHA-1表达式。
	  # <dst>则描述要更新哪个远程引用。它必须是一个实际的引用名称。
	  # <tag> 对于tag来说，这相当于 refs/tags/<tag>:ref/tags/<tags>
```

#### 选项

```
--all	# 推送所有的分支。
-d, --delete	# 删除远程仓库的refs。refs可以一个分支，也可以是一个标签。
-f, --force		# 看起来不是“强制推送”这么简单，具体原理待查
-u, --set-upstream	# 指定默认的远程仓库
```



#### 例子

```
# 如果修改了远程仓库，又修改了本地仓库，则提交的时候会出错。如果对远程仓库的修改不重要，则可强制覆盖远程仓库  
  git push -f orgin master:master 

# 重命名远程分支。没有直接重命名远程分支的命令，只能采用迂回的办法。
	# 1. 删除远程分支
	# 2. 本地分支改名
	# 3. 把改名后的本地分支推送到远程
```

