2013-04-23 145 views
11

我的.git /配置:git如何将其他分支推送到远程/源?

[remote "origin"] 
    url = [email protected]:nfpyfzyf/test.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 

我的本地分支:

     HEAD 
        | 
       F---G feature**current branch 
       /
     C---D---E develop 
    /   
A---B master 

我现在在功能分支,要推到遥远。目前的命令是什么,是git push origin feature?如果我做git push会发生什么?

回答

14

要推送特定分支,请运行git push <remote> <branch>。在你的情况,你只定义了用遥控器origin,并希望把你的feature分支,这样就使得

$ git push origin feature

“Examples” section of the git push documentation介绍,如果你运行git push没有其他的参数发生了什么。

git push

工程等git push <remote>,其中是当前分支的远程(或origin,如果没有远程被配置用于当前分支)。

鉴于您的问题中的配置,您的feature分支没有远程配置,因此上述调用等同于下一个示例。

git push origin

如果没有额外的配置,工作方式类似于git push origin :&hellip;

继菊花链,我们看到,这相当于

git push origin :

推“匹配”的分支原点。请参阅上面的OPTIONS部分,了解“匹配”分支的说明。

匹配分支的规则是

特殊的Refspec :(或+:允许非快速向前更新)指导git推“匹配”的分支:对于上存在的每一个分支本地端,如果远程端已存在同名分支,则更新远端端。如果未找到明确的refspec(这既不在命令行中,也不在相应的远程文件的任何Push行中),并且没有设置配置变量push.default,这是缺省操作模式。

在你的情况下,唯一匹配的分支是master,所以git push将推动该分支并退出。

0

是的git push origin feature是正确和明确的命令。

当你做git push没有参数时会发生什么情况会受到你的配置的影响。配置变量push.default告诉git在这种情况下要做什么。查看手册页(git config --help并搜索push.default)以获取更多信息。有这么多,有几种可能性:nothing,matching,upstream,simplecurrent

另外What is the difference between git push.default=current and push.default=upstream?可以提供帮助。

0

git push origin feature是正确的。如果你做到这git push很可能会说这样的事情:

fatal: The current branch feature has no upstream branch. 
To push the current branch and set the remote as upstream, use 

    git push --set-upstream origin feature 

您使用后--set-upstream(或只是-u),简单git push将工作

0

如果你使用git-flow可以工作使用

git flow feature publish $FEATURE 

将分支推送到远程并将其创建为远程。

这等于做一个简单的

git push origin $FEATURE 

如果你只是做了git push这取决于你的配置会发生什么 - 在我的配置它推动所有远程现有分行。

0

git push origin $FEATURE肯定是正确的,并会得到你想要的。不过,我经常使用:

git push -u origin HEAD 

这将推动我的当前分支,使用分支的名字,所以我不必在命令行中键入明确出来。正如其他答案中提到的那样,-u将设置上游,以便将来可以使用普通的git push