【问题标题】:How git push current branch to another remote/origin?git 如何将当前分支推送到另一个远程/源?
【发布时间】:2013-04-16 12:17:24
【问题描述】:

我的 .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会发生什么?

【问题讨论】:

    标签: git


    【解决方案1】:

    要推送特定分支,请运行 git push <remote> <branch>。在您的情况下,您唯一定义的遥控器是origin,并且您想推送您的feature 分支,这样就可以

    $ git push origin 功能

    “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 将推送该分支并退出。

    【讨论】:

      【解决方案2】:

      是的,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? 也可以提供帮助。

      【讨论】:

        【解决方案3】:

        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就可以工作了

        【讨论】:

          【解决方案4】:

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

          git flow feature publish $FEATURE
          

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

          等于做一个简单的

          git push origin $FEATURE
          

          如果您只是简单地执行git push,这取决于您的配置会发生什么 - 在我的配置中,它会推送所有远程现有的分支。

          【讨论】:

            【解决方案5】:

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

            git push -u origin HEAD
            

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

            【讨论】:

              【解决方案6】:

              我认为这是可行的方法,

              git push --set-upstream origin refs/heads/[your_local_branch_name]:refs/heads/[remote_branch_name_you_want]
              

              【讨论】:

                猜你喜欢
                • 2020-06-09
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-09-10
                • 2016-07-08
                相关资源
                最近更新 更多