>[success] # 分支push 远程
1. `push`把当前`branch`的位置(即它指向哪个`commit`)上传到远端仓库,如下图此时`HEAD `指向了 `master `指向了 `6 `这个`commit`,当执行 git push 时候实际是之将当前master 分支提交
![](https://img.kancloud.cn/0c/d6/0cd6e1cc32b995c0f38b1bf84b290057_567x825.png)
* 提交后
![](https://img.kancloud.cn/6a/6d/6a6dc8f68d14e90c9d5b27d754fcab7c_629x280.png)
如果想提交对应分支需要切换对应分支在进行push
~~~
git checkout xxx
git push xxx
~~~
这样以后可以直接 在对应分支 进行 `git push` 就会提交到对应的远程分支
2. 如果不切换手动切换分支想提交指定分支到远程可以`git push 远程仓库名 xxx`,例如`git push origin testing`
3. 即使将其他分支 `push` 到远程,远程分支`HEAD `指向也不会改变,因为远程仓库的`HEAD`是永远指向它的默认分支(即 master,如果不修改它的名称的话),并会随着默认分支的移动而移动的
![](https://img.kancloud.cn/0a/09/0a0911a22001f4edef21416dc64daca2_588x912.gif)
>[danger] ##### 其他操作
在 Git 中(2.0 及它之后的版本),默认情况下,你用不加参数的`git push`只能上传那些之前从远端`clone`下来或者`pull`下来的分支,而如果需要`push`你本地的自己创建的分支,则需要手动指定目标仓库和目标分支(并且目标分支的名称必须和本地分支完全相同),就像上面这样。
你可以通过`git config`指令来设置`push.default`的值来改变`push`的行为逻辑,例如可以设置为「所有分支都可以用`git push`来直接 push,目标自动指向`origin`仓库的同名分支」(对应的`push.default`值:`current`),或者别的什么行为逻辑,你甚至可以设置为每次执行`git push`时就自动把所有本地分支全部同步到远程仓库(虽然这可能有点耗时和危险)。如果希望详细了解,你可以到[这里](https://link.juejin.cn/?target=https%3A%2F%2Fgit-scm.com%2Fdocs%2Fgit-config%23git-config-pushdefault "https://git-scm.com/docs/git-config#git-config-pushdefault")看看。
>[info] ## 文章参考
[Git 原理详解及实用指南](https://juejin.cn/book/6844733697996881928)