git 如何将当前分支推送到另一个远程/源?
Posted
技术标签:
【中文标题】git 如何将当前分支推送到另一个远程/源?【英文标题】:How git push current branch to another remote/origin? 【发布时间】: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
会发生什么?
【问题讨论】:
【参考方案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
)以获取更多信息。就这么多,有几种可能性:nothing
、matching
、upstream
、simple
和 current
。
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]
【讨论】:
以上是关于git 如何将当前分支推送到另一个远程/源?的主要内容,如果未能解决你的问题,请参考以下文章