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

4

6 回答 6

36

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

$ git push origin 功能

文档“示例”部分git push描述了如果您在git push没有其他参数的情况下运行会发生什么。

git push

像 一样git push <remote>,当前分支的远程在哪里(或者origin,如果当前分支没有配置远程)。

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

git push origin

没有额外的配置,就像git push origin :……</p>

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

git push origin :

将“匹配”的分支推送到原点。有关“匹配”分支的描述,请参见上面的选项部分。

匹配分支的规则是

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

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

于 2013-10-30T15:52:19.037 回答
1

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

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

另外git push.default=current 和 push.default=upstream 有什么区别?可以帮忙。

于 2013-04-23T10:14:37.740 回答
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就可以了

于 2013-04-23T10:14:53.297 回答
0

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

git flow feature publish $FEATURE

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

相当于做一个简单的

git push origin $FEATURE

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

于 2013-04-23T10:15:03.183 回答
0

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

git push -u origin HEAD

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

于 2013-04-23T19:50:42.900 回答
0

我认为这是可能的方法,

git push --set-upstream origin refs/heads/[your_local_branch_name]:refs/heads/[remote_branch_name_you_want]
于 2021-12-23T03:36:51.437 回答