如何将git当前分支推送到另一个远程/origin?

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

6个回答

37
要推送特定分支,请运行git push <remote> <branch>。在您的情况下,您唯一定义的远程是origin,并且您想要推送您的feature分支,所以这使得:

$ git push origin feature

“git push”文档的“示例”部分描述了如果您不带其他参数运行git push会发生什么。

git push

git push <remote> 一样工作,其中 <remote> 是当前分支的远程 (或者如果当前分支没有配置远程,则为 origin)。

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

git push origin

在没有其他配置的情况下,工作方式类似于git push origin :

按照顺序,我们可以看到这相当于:

git push origin :

将“匹配”分支推送到origin。请参阅上面的“选项”部分中的描述,了解“匹配”分支的规则。

匹配分支的规则为:

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

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


2
"

git push origin $FEATURE 是正确的,能够帮助你达到预期目的。然而,我经常使用以下命令:

"
git push -u origin HEAD

这将使用分支名称推送我的当前分支,因此我不必在命令行中明确输入它。如其他答案中所提到的一样,-u会设置上游,这样以后只需使用git push即可。

1

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

如果你执行 git push 而没有参数,这取决于你的配置。配置变量 push.default 告诉 git 在这种情况下要做什么。查看手册页(git config --help 并搜索 push.default)以获取更多信息。只有这么多,有几种可能性:nothingmatchingupstreamsimplecurrent

此外,git push.default=current 和 push.default=upstream 之间有什么区别? 也可以帮助解答。


1

我认为这是一种可行的方法,

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

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,那么它会根据你的配置而定,对于我的配置来说,它会推送所有远程存在的分支。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接