git如何将其他分支推送到远程/来源?

时间:2013-04-23 10:12:33

标签: git

我的.git / config:

[remote "origin"]
    url = git@github.com: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会怎样?

5 个答案:

答案 0 :(得分:22)

要推送特定分支,请运行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 : ...

一样

在菊花链之后,我们发现这相当于

  

git push origin :

     

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

匹配分支的规则是

  

特殊refspec :(或+:允许非快进更新)指示git推送“匹配”分支:对于本地端存在的每个分支,如果远程端已存在同名分支,则更新远程端。如果没有找到显式的refspec,这是默认的操作模式(既不在命令行也不在相应的远程文件的任何Push行中 - 见下文)并且没有设置push.default配置变量。

在您的情况下,唯一匹配的分支是master,因此git push将推送该分支并退出。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分: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就可以了

答案 3 :(得分:0)

如果您正在使用git-flow,则可以使用

git flow feature publish $FEATURE

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

等于做一个简单的

git push origin $FEATURE

如果你只是做一个git push,那取决于你的配置会发生什么 - 在我的配置中,它会推送所有远程现有分支。

答案 4 :(得分:0)

git push origin $FEATURE当然是正确的,并会为您提供所需的内容。但是,我经常使用:

git push -u origin HEAD

这将使用分支名称推送我当前的分支,因此我不必在命令行上显式输出。正如其他一个答案中所提到的,-u将设置上游,以便普通git push将来可用。