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

git push origin sandbox

如果我说

git push origin

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

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

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

git push 
git push origin

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

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


当前回答

我只是把它放在.gitconfig别名部分,喜欢它的工作方式:

pub = "!f() { git push -u ${1:-origin} `git symbolic-ref HEAD`; }; f"

将使用gitpub或另一个具有gitpub repo名称的repo将当前分支推送到源。美味的

其他回答

git push origin将推送源位置具有匹配远程分支的本地分支上的所有更改

工作方式类似于git push<remote>,其中<remote’是当前分支的远程(或源,如果当前分支没有配置远程)。

从git push手册页的Examples部分

我在.bashrc文件中添加了以下函数,以自动化这些任务。它执行gitpush/gitpull+当前分支的名称。

function gpush()
{
  if [[ "x$1" == "x-h" ]]; then
    cat <<EOF
Usage: gpush
git: for current branch: push changes to remote branch;
EOF
  else
    set -x
    local bname=`git rev-parse --abbrev-ref --symbolic-full-name @{u} | sed -e "s#/# #"`
    git push ${bname}
    set +x
  fi
}

function gpull()
{
  if [[ "x$1" == "x-h" ]]; then
    cat <<EOF
Usage: gpull
git: for current branch: pull changes from
EOF
  else
    set -x
    local bname=`git rev-parse --abbrev-ref --symbolic-full-name @{u} | sed -e "s#/# #"`
    git pull ${bname}
    set +x
  fi
}

您可以在.gitconfig中更改默认行为,例如:

[push]
  default = current

要检查当前设置,请运行:

git config --global --get push.default

您可以通过在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

您可以使用push.default为git设置默认行为

git config push.default current

或者如果您有许多存储库,并且希望所有存储库都相同

git config --global push.default current

这个设置中的current意味着默认情况下,您只在执行gitpush时推送当前分支

其他选项包括:

无:不要推任何东西matching:推送所有匹配的分支(默认)跟踪:将当前分支推到它正在跟踪的任何位置current:推送当前分支


更新-实现此操作的新方法

截至Git 1.7.11,请执行以下操作:

git config --global push.default simple

这是一个新的设置,其工作方式与当前相同,根据传言,它将从v2.0默认为git