你如何仅推送一个 Git 分支(而不是其他分支)?
如何仅推送一个 Git 分支(而不是其他分支)?
有人问道,是否需要切换到 feature_x 分支?是的,因为如果你在 master 分支上,它会尝试将本地 master 分支推送到远程 feature_x 分支。如果想避免切换,可以使用 "git push origin feature_x:feature_x" 命令。
我看到其他问题中(例如:here)他们使用了 "git push -u origin
这意味着 git push origin master 只会推送 master 分支,而不是你正在处理的其他任何分支吗?是的,该命令将本地 master 分支推送到名为 origin 的仓库。
这似乎不正确,还会选择多个提交。这个问题是关于推送单个 git 分支,而不是单个提交。
我认为第一次应该使用 -u 选项来初始化跟踪。之后,只需使用 git push ... 命令。
替换 origin 为你的 git 远程仓库的名称。
解决方法如下:
git checkout feature_x
git push origin feature_x
或者使用现代的 git 版本,可以简单地使用 "git push origin HEAD" 或者 "git push HEAD" 来仅推送当前所在的分支。
在默认情况下,git push
会更新所有远程分支。但是你可以配置git只更新当前分支到它的上游分支。
git config push.default upstream
这意味着当你执行git push时,git只会更新当前(检出的)分支。
其他有效的选项包括:
nothing
:除非显式给出refspec,否则不推送任何内容(报错)。这主要是为了那些希望通过始终明确的方式避免错误的人而设计的。matching
:推送在两端具有相同名称的所有分支(在1.7.11版本之前的默认选项)。upstream
:将当前分支推送到其上游分支。只有在将分支推送到通常从中拉取的同一存储库时才有意义(即中央工作流)。本地和远程分支不需要相同的名称。tracking
:已弃用,请使用upstream
替代。current
:将当前分支推送到接收端的同名远程分支。在中央和非中央工作流中都适用。simple
:[自1.7.11版起可用]在集中式工作流中,类似于upstream
,但增加了一个安全性,如果上游分支的名称与本地分支的名称不同,则拒绝推送。当推送到与通常从中拉取的远程存储库不同的远程存储库时,行为类似于current
。这是最安全的选项,适合初学者。这个模式已经成为Git 2.0的默认设置。
谢谢,current
是我正在寻找的,通过默认git push
,在foo
分支将会推送到origin/foo
分支。
谢谢,我同意current
作为默认值更合理。