我的.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
会怎样?
答案 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
)以获取更多信息。同样,有几种可能性:nothing
,matching
,upstream
,simple
和current
。
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
将来可用。