将分支合并推送到Github

时间:2014-02-14 22:04:39

标签: git github merge push

我在本地拥有mastertest分支,并与我的Github帐户同步。我已将test分支合并到master,因为我已经完成了它:

git checkout master
git merge test

现在我想把这个合并推到Github,我不知道这三个命令中的哪一个:

git push
git push origin
git push origin master

我应该用。哪个是正确的,它们有什么不同?

2 个答案:

答案 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会将默认设置更改为   简单。

来源:

答案 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}}的内容。