我使用以下命令推送到我的远程分支:
git push origin sandbox
如果我说
git push origin
这会推动我的其他分支的变化,还是只更新我当前的分支?我有三个分支: master
, production
和 sandbox
.
git push
文档对此并不十分清楚,所以我想澄清这一点 .
哪些分支和遥控器执行以下 git push
命令更新?
git push
git push origin
origin
上面是一个遥控器 .
我知道 git push [remote] [branch]
只会将该分支推送到远程 .
12 回答
您可以使用push.default为您的git设置默认行为
或者如果您有许多存储库并希望所有存储库都相同
此设置中的 current 表示默认情况下,当您执行 git push 时,您将 only push the current branch
其他选择是:
什么都没有:不要推东西
匹配:推送所有匹配的分支(默认)
tracking:将当前分支推送到跟踪的任何分支
current:推送当前分支
UPDATE - NEW WAY TO DO THIS
从Git 1.7.11开始,执行以下操作:
这是一个引入的新设置,其工作方式与当前相同,并且根据谣言将从v 2.0默认为git
git push会尝试将所有本地分支推送到远程服务器,这可能是您不想要的 . 我有几个便利设置来处理这个:
别名“gpull”和“gpush”:
在我的〜/ .bash_profile中
因此,执行“gpush”或“gpull”将仅推送我的“当前打开”分支 .
我已将以下函数添加到我的.bashrc文件中以自动执行这些任务 . 它确实当前分支的git push / git pull名称 .
您可以通过在git config中设置push.default来控制默认行为 . 来自the git-config(1) documentation:
如果在命令行上没有给出refspec,在远程中没有配置refspec,并且命令行上给出的任何选项都没有暗示refspec,则定义git push应采取的操作 . 可能的值是:
nothing
:不要推任何东西matching
:推送所有匹配的分支两端具有相同名称的所有分支都被认为是匹配的 .
这是Git 1.x中的默认值 .
upstream
:将当前分支推送到其上游分支(tracking
是上游的弃用同义词)current
:将当前分支推送到同名分支simple
:( Git 1.7.11中的新内容)像上游一样,但如果上游分支的名称与本地分支不同,则拒绝推送这是最安全的选择,非常适合初学者 .
这将成为Git 2.0中的默认设置 .
命令行示例:
要查看当前配置:
要设置新配置:
我只是将我的代码提交到分支并将其推送到github,如下所示:
您可以使用命令推送当前分支
(摘自here)
git push origin
将推送具有匹配远程分支的本地分支上的所有更改origin
至于git push
来自git-push man page的示例部分
我更喜欢创建git-XXX脚本,而不是使用别名,所以我可以更容易地控制它们(我们的开发人员在这种类型的东西上都有一个源控制的dir路径) .
此脚本(称为
git-setpush
)将remote.origin.push
值的配置值设置为仅推送当前分支的值:请注意,当我们使用Gerrit时,它会将目标设置为
refs/for/XXX
以进入审阅分支 . 它还假设origin是您的远程名称 .签出分支后调用它
它显然可以适应结帐,但我喜欢脚本do one thing and do it well
您可以在.gitconfig中更改该默认行为,例如:
要检查当前设置,请运行:
(2012年3月)
Beware: that default "matching" policy might change soon (sometimes after git1.7.10+) :
见“Please discuss: what "git push" should do when you do not say what to push?”
http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694
http://thread.gmane.org/gmane.comp.version-control.git/123350/focus=123541
http://thread.gmane.org/gmane.comp.version-control.git/166743
这是关于 Git Push 的非常方便和有用的信息:Git Push: Just the Tip
git push最常见的用途是将本地更改推送到公共上游存储库 . 假设上游是名为"origin"的远程(如果您的存储库是克隆的默认远程名称),并且要更新到/来自的分支名为"master"(默认分支名称),则完成以下操作:
git push origin master
git push origin
会将所有本地分支的更改推送到原始远程的匹配分支 .git push origin master
会将更改从本地主分支推送到远程主分支 .git push origin master:staging
会将更改从本地主分支推送到远程分段分支(如果存在) .我只是将它放在我的.gitconfig别名部分,并喜欢它的工作原理:
将
git pub
或其他仓库git pub repo-name
推送到当前分支 . 可口 .