你如何推动一个单一的Git分支(没有其他分支)?

我正在使用本地的git存储库。 有两个分支, masterfeature_x

我想将feature_x推送到远程仓库,但我不想在master分支上推送更改。

从我的feature_x分支( feature_x分支已经存在于远程)的工作将一个git push origin feature_x

我不想在我的盒子上testing这个,因为我现在无法推送给主人。

是的,只要做到以下几点

 git checkout feature_x git push origin feature_x 

默认情况下, git push更新所有远程分支。 但你可以configurationgit只更新当前分支到上游。

 git config push.default upstream 

这意味着git只会在您执行git push时更新当前(签出)分支。

其他有效的选项是:

  • nothing不要:除非明确给出refspec,否则不要推送任何东西(出错)。 这主要是针对那些想要避免错误的人而始终明确的。
  • matching :推送两端同名的所有分支。 (在版本1.7.11之前的默认选项)
  • upstream :将当前分支推送到其上游分支。 这种模式只有在你推送到你通常需要的同一个仓库(例如中央工作stream程 )时才有意义。 本地和远程分支不需要有相同的名称
  • tracking :弃用,而是使用upstream
  • current :将当前分支推送到接收端同名远程分支。 适用于中央和非中央工作stream程。
  • simple :在集中式工作stream程中[从版本1.7.11开始可用],像upstream一样工作,如果上游分支的名称与本地名称不同,则拒绝推送。 当推送到一个不同于远程的远程设备时,您通常会从current工作。 这是最安全的select,适合初学者。 这个模式已经成为Git 2.0中的默认模式。

在Karthik Bose的答案之上稍作更新 – 您可以在全局configurationgit来影响您的所有工作空间,使其行为如此:

 git config --global push.default upstream 

假设你有一个本地分支foo,一个叫做origin的远程和一个远程分支origin / master。

要将foo的内容推送到origin / master,首先需要设置其上游:

 git checkout foo git branch -u origin/master 

然后你可以使用以下命令推送到这个分支

 git push origin HEAD:master 

在最后一个命令中,你可以添加 – 强制使用fooreplaceorigin / master的所有历史logging。