我使用以下命令推送到远程分支:

git push origin sandbox

如果我说

git push origin

这是在我的其他分支中也推送更改,还是只更新我的当前分支?我有三个分支:master、production和sandbox。

git推送文档对此不是很清楚,所以我想永远澄清这一点。

下面的git push命令会准确更新哪些分支和远程?

git push 
git push origin

上面的原点是一个遥控器。

我知道gitpush[remote][branch]将只将该分支推送到远程。


当前回答

(2012年3月)注意:默认的“匹配”策略可能很快就会改变(有时在git1.7.10+之后):

请参阅“请讨论:当你不说推送什么时,“git推送”应该做什么?”

在当前设置中(即push.default=matching),不带参数的gitpush将推送本地和远程存在的同名分支。当开发人员将其推送到自己的公共存储库时,这通常是合适的,但在使用共享存储库时如果不是危险的话,可能会令人困惑。建议将默认值更改为“上游”,即仅推送当前分支,并将其推送到git pull将从中拉出的分支。另一位候选人是“现任”;这只将当前分支推送到同名的远程分支。到目前为止讨论的内容可以在本主题中看到:

http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694

之前的相关讨论包括:

http://thread.gmane.org/gmane.comp.version-control.git/123350/focus=123541http://thread.gmane.org/gmane.comp.version-control.git/166743

要加入讨论,请将消息发送到:git@vger.kernel.org

其他回答

git推送将尝试将所有本地分支推送到远程服务器,这可能是您不希望的。我有两个方便的设置来处理这个问题:

适当地别名“gpull”和“gpush”:

在我的~/.bash_profile中

get_git_branch() {
  echo `git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
}
alias gpull='git pull origin `get_git_branch`'
alias gpush='git push origin `get_git_branch`'

因此,执行“gpush”或“gpull”将只推送我的“当前打开”分支。

您可以使用命令推送当前分支

git push origin HEAD

(取自此处)

您可以通过在git配置中设置push.default来控制默认行为。从gitconfig(1)文档中:

push.default

定义如果命令行上没有给定refspec、远程中没有配置refspec以及命令行上给定的任何选项都没有暗示refspec,git push应该采取的操作。可能的值包括:

什么都没有:不要推任何东西matching:(Git2.0之前的默认值)推送所有匹配的分支两端具有相同名称的所有分支都被认为是匹配的。上游:将当前分支推到其上游分支(跟踪是上游的同义词,已弃用)当前:将当前分支推送到同名分支simple:(Git1.7.11中新增,自Git2.0以来默认)喜欢上游,但如果上游分支的名称与本地分支不同,则拒绝推送这是最安全的选择,非常适合初学者。

简单、当前和上游模式适用于那些希望在完成工作后推出单个分支的人,即使其他分支尚未准备推出

命令行示例:

要查看当前配置,请执行以下操作:

git config push.default

要设置新配置,请执行以下操作:

git config push.default current

下面是关于Git推送的非常方便和有用的信息:Git推送:提示

git push最常见的用法是将本地更改推送到公共上游存储库。假设上游是一个名为“origin”(如果您的存储库是克隆,则为默认远程名称)的远程,并且要更新到/来自的分支名为“master”(默认分支名称),这可以通过以下方式完成:git push origin master

gitpushorigin将把所有本地分支的更改推送到源远程的匹配分支。

gitpushoriginmaster将从本地主分支向远程主分支推送更改。

gitpushorigin-master:如果存在,staging会将更改从本地master分支推送到远程staging分支。

我只是将代码提交到一个分支并将其推送到github,如下所示:

git branch SimonLowMemoryExperiments
git checkout SimonLowMemoryExperiments
git add .
git commit -a -m "Lots of experimentation with identifying the memory problems"
git push origin SimonLowMemoryExperiments