How do you push just a single Git branch (and no other branches)?
我正在处理本地Git存储库。有两个分支:
我想把
我的
我不想在我的盒子上测试这个,因为我现在不能推给大师。
是的,只需执行以下操作
1 2 | git checkout feature_x git push origin feature_x |
默认情况下,
1 | git config push.default upstream |
这意味着在执行git push时,git将只更新当前(签出)分支。
其他有效选项包括:
nothing :除非明确给出了refspec,否则不要推送任何东西(错误)。这主要是针对那些希望总是直截了当地避免错误的人。matching :推压两端同名的所有分支。(1.7.11版之前的默认选项)upstream :将当前分支推到其上游分支机构。只有当您推送到通常要从中提取的同一存储库(即中央工作流)时,此模式才有意义。本地和远程分支不需要具有相同的名称。tracking :已弃用,改用upstream 。current :将当前分支推到接收端同名的远程分支。在中心工作流和非中心工作流中工作。simple 【从1.7.11版开始提供】在集中工作流中,与upstream 一样工作,如果上游分支机构的名称与本地分支机构的名称不同,则增加了拒绝推送的安全性。当推到一个与你通常拉的遥控器不同的遥控器时,按current 的方式工作。这是最安全的选择,适合初学者。此模式已成为Git2.0中的默认模式。
除了Karthik Bose的答案之外,还有一个小的更新——你可以在全球范围内配置Git,以影响你所有的工作区的行为:
1 | git config --global push.default upstream |
假设您有一个本地分支foo,一个称为origin的远程分支和一个远程分支origin/master。
要将foo的内容推送到origin/master,首先需要设置其上游:
1 2 | git checkout foo git branch -u origin/master |
然后您可以使用以下方法推到此分支:
1 | git push origin HEAD:master |
在最后一个命令中,您可以添加--force来用foo替换源站/master的整个历史记录。