我在本地拥有master
和test
分支,并与我的Github帐户同步。我已将test
分支合并到master
,因为我已经完成了它:
git checkout master
git merge test
现在我想把这个合并推到Github,我不知道这三个命令中的哪一个:
git push
git push origin
git push origin master
我应该用。哪个是正确的,它们有什么不同?
答案 0 :(得分:1)
如果您未在git push
远程或分支中指定,则默认情况下会origin
第二部分更复杂,取决于你拥有的git配置。取决于您在git配置中具有的push.default
选项的不同行为将以某种方式表现。这些是push.default
的可能值以及git push
将如何表现:
没有 - 除非明确给出refspec,否则不要推送任何内容(错误输出)。这主要是针对想要避免的人 总是明确的错误。
当前 - 推送当前分支以更新接收端具有相同名称的分支。适用于中央和非中央 工作流程。
上游 - 将当前分支推送回分支,该分支的更改通常集成到当前分支(称为当前分支) @{上游})。这种模式只有在你推动时才有意义 您通常会从中获取相同的存储库(即中央工作流程)。
简单 - 在集中式工作流程中,像上游一样工作,如果上游分支的名称不同,则会增加安全性以拒绝推送 来自当地的。
当推到与遥控器不同的遥控器时 通常来自,作为当前工作。这是最安全的选择 适合初学者。
此模式将成为Git 2.0中的默认模式。
匹配 - 推送两端具有相同名称的所有分支。这使您正在推动的存储库记住了一组分支 这将被推出(例如,如果你总是推动maint和master 那里没有其他分支,你推送的存储库将有 这两个分支,你的当地maint和master将被推动 那里)。
要有效地使用此模式,您必须确保所有分支 在推出git push之前你会推出准备推出的, 因为这种模式的重点是允许你推动所有的 分店一气呵成。如果你通常只在一个分支上完成工作 推出结果,而其他分支未完成,这种模式是 不适合你。此模式也不适合推入共享 中央存储库,因为其他人可能会在那里添加新的分支,或 更新您控制之外的现有分支的提示。
目前这是默认设置,但Git 2.0会将默认设置更改为 简单。
来源:
push.default
)答案 1 :(得分:1)
他们在你的命令中给你的Git信息有多少,以及Git必须从你的配置中填写多少,然后再回到Git的默认设置。确切的行为也可能取决于您的Git版本。
在许多存储库中,这三个命令的行为方式相同。
以下是我的Git版本(1.8.3.2)中git-push
的文档说明:
When the command line does not specify where to push with the
<repository> argument, branch.*.remote configuration for the current
branch is consulted to determine where to push. If the configuration is
missing, it defaults to origin.
所以,如果你有branch.master.remote
集,那就是Git会使用的。如果没有,它会回落到origin
。如果您通过clone
创建了本地副本,则可能已设置此项。同样,如果你做过像git push -u origin master
这样的事情,那就应该设置。
您可以通过运行git config branch.master.remote
进行验证,该origin
应输出When the command line does not specify what to push with <refspec>...
arguments or --all, --mirror, --tags options, the command finds the
default <refspec> by consulting remote.*.push configuration, and if it
is not found, honors push.default configuration to decide what to push
(See gitlink:git-config[1] for the meaning of push.default).
。
更多来自文档:
remote.master.push
同样,如果您设置了git clone
,那就是它将使用的内容。同样,如果您已完成git push -u ...
或git config branch.master.merge
,则可能已设置此项。
使用refs/heads/master
进行验证,该{{1}}应输出类似{{1}}的内容。