【发布时间】:2012-09-09 20:37:41
【问题描述】:
使用git push origin master 将本地 git 存储库的 master 分支推送到名为 origin 的远程存储库的 master 分支有什么不同吗?
还是git push origin?
【问题讨论】:
标签: git git-push git-remote
使用git push origin master 将本地 git 存储库的 master 分支推送到名为 origin 的远程存储库的 master 分支有什么不同吗?
还是git push origin?
【问题讨论】:
标签: git git-push git-remote
git push和git push origin的默认操作自git版本1.7.11起发生了变化:
在1.7.11之前,git push默认推送所有远程存在的同名分支。
由于1.7.11,git push默认将当前分支推送到同名远程分支。
在版本1.7.11之前和之后,可以使用push.default配置选项来配置默认行为。在git版本1.6.3中已经引入了这个配置选项。
【讨论】:
git push origin master
这只会将你的主分支推送到原点
git push origin
将所有分支推送到原点
更新 - 自编写此答案以来,Git 的行为发生了变化。 Git >=2.0 上的git push origin 默认情况下会将当前分支推送到同名的匹配分支,但可以通过git config 覆盖此行为
【讨论】:
git push origin 默认情况下可能会推送所有分支,但实际上它会推送“您配置推送的任何内容”。默认值可以更改,因此除非您知道您的存储库配置为推送什么,否则显式 git push origin master 在某些方面“更安全”。
虽然 Git >=2.0 上的 git push origin 默认确实将当前分支推送到同名的匹配分支,但文档是错误的!
所述文档已使用 Git 2.32(2021 年第二季度,8 年后)修复:
参见Taylor Blau (ttaylorr) 的commit 4c8e3dc(2021 年 3 月 8 日)。
(由 Junio C Hamano -- gitster -- 合并于 commit c6617d1,2021 年 3 月 24 日)
Documentation/git-push.txt: 正确配置错误报告人:Adam Sharafeddine
报告人:Fabien Terrani
签字人:Taylor Blau
审核人:Jonathan Nieder
在“示例”部分,
git-push表示“git push origin”(man) 将当前分支推送到“remote.origin.merge”配置的值。这个措辞(可以追溯到b2ed944(
push: switch default from , 2013-01-04, Git v2.0.0-rc0 -- merge)(push: switch default from "matching" 到 "simple", 2013-01-04)) 不正确。
没有'remote.<name>.merge'这样的配置。
这可能原本打算改为“branch.<name>.merge”。确实,当 '
push.default' 是 'simple' (这是默认值,并且根据“无需额外配置”适用于这种情况)时,如果分支的本地名称不匹配,setup_push_upstream()就会死掉'branch.<name>.merge'。更正这个长期存在的错字,以解决最近对该示例预期行为的一些混淆。
git push 现在包含在其man page 中:
git push origin:无需额外配置,如果当前分支与当前分支同名,则将当前分支推送到已配置的上游(
branch.<name>.merge配置变量),否则会出错而不推送。
【讨论】: