git push --all
对于将大型合并链推送到远程位置非常方便,但是它具有推动您可能不想推出的分支的副作用,因此应该避免在那种情况下。< / p>
但我真的很喜欢--all
。
有没有办法让push
推送已经在该遥控器上的所有分支但不推送远程没有的分支?
答案 0 :(得分:2)
尝试git push origin :
,因为它应该只推送远程端的匹配分支。
请参阅:https://www.kernel.org/pub/software/scm/git/docs/git-push.html#OPTIONS
特殊refspec :(或+:允许非快进更新)指示git推送“匹配”分支:对于本地端存在的每个分支,远程端如果是相同的分支则更新名称已存在于远程端。如果没有找到显式的refspec(这既不在命令行也不在相应的远程文件的任何Push行中 - 见下文),并且没有设置push.default配置变量,这是默认的操作模式。
答案 1 :(得分:2)
push.default
定义如果在命令行上没有给出refspec,在远程中没有配置refspec,并且命令行上给出的任何选项都没有暗示refspec,那么git push应采取的操作。可能的值有:
[剪断]
matching
- 推送两端具有相同名称的所有分支。这适用于那些将所有分支准备成可发布的形状然后用一个命令将它们推出的人。它不适合推入多个用户共享的存储库,因为如果其他用户更新了分支,本地停止的分支将尝试非快速推送。目前这是默认设置,但Git 2.0会将默认值更改为
simple
。
换句话说,请忽略--all
,但配置push.default=matching
(可以在命令行上使用-c
选项执行,或在存储库配置中设置)。