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

Raf*_*ler 231 git git-push

我正在开发一个本地git存储库.有两个分支,masterfeature_x.

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

git push origin feature_x从我的feature_x分支(feature_x分支已经存在远程的)工作?

我不想在我的盒子上测试这个,因为我现在无法推动掌握.

cpj*_*eur 359

是的,只需执行以下操作即可

git checkout feature_x
git push origin feature_x
Run Code Online (Sandbox Code Playgroud)

  • 使用现代git,您应该能够简单地"git push origin HEAD",甚至"git push HEAD"来仅推送当前已检出的分支. (53认同)
  • 是的,因为如果你在master上,它会尝试将本地主分支推送到远程feature_x分支.首先你不必检查"git push origin feature_x:feature_x" (5认同)
  • @miss_R`git-push`命令的`-u`选项将设置上游引用以跟踪刚刚推送的分支.这将使得该分支上的`git-pull`之类的东西已经知道在不指定的情况下从哪个分支拉出来.推送单个分支不是必需的,但是被广泛使用,因为很多人确实想让本地分支跟踪他们正在推送的远程分支. (3认同)
  • 是否有必要结账到feature_x? (2认同)
  • @cpjolicoeur 我在其他问题中看到(例如:[这里](http://stackoverflow.com/questions/2765421/how-to-push-a-new-local-branch-to-a-remote-git-repository- and-track-it-to-to) ) 他们正在做`git push -u origin <branch-name>`。然而你并没有提到它。有必要吗 ? (2认同)

Kar*_*ose 70

默认情况下,git push更新所有远程分支.但是你可以配置git只更新当前分支到它的上游.

git config push.default upstream
Run Code Online (Sandbox Code Playgroud)

这意味着当您执行git push时,git将仅更新当前(已检出)分支.

其他有效选项包括:

  • nothing:除非明确给出refspec,否则不要推送任何内容(错误输出).这主要是针对那些希望通过始终明确避免错误的人.
  • matching:推送两端具有相同名称的所有分支.(Ver 1.7.11之前的默认选项)
  • upstream:将当前分支推送到其上游分支.如果您要推送到通常从中拉出的相同存储库(即中央工作流),则此模式才有意义.无需为本地和远程分支使用相同的名称.
  • tracking:不推荐使用,upstream改为使用.
  • current:将当前分支推送到接收端同名的远程分支.适用于中央和非中央工作流程.
  • simple:[自Ver 1.7.11起可用]在集中式工作流程中,upstream如果上游分支的名称与本地分支的名称不同,则可以更加安全地拒绝推送.当你推到一个与通常拉出的遥控器不同的遥控器时,请按照current.这是最安全的选择,适合初学者.此模式已成为Git 2.0中的默认模式.

  • 谢谢,`current`是我想要的,默认情况下,`foo`分支中的`git push`会将它推送到`origin/foo`分支. (2认同)

Bha*_*kar 7

Karthik Bose回答之上的小更新- 您可以全局配置git,以影响所有工作区以这种方式行事:

git config --global push.default upstream
Run Code Online (Sandbox Code Playgroud)