In Git 2.0 the default has been changed to simple which is narrower in scope – more specific and more intuitive – it will now only push:
The current branch to the branch with the same name only when the current branch is set to integrate with that remote branch on the same remote;
The current branch to the branch with the same name, if you are pushing to a remote that is not where you usually fetch from.
我对此感到困惑。 “当前分支设置为与远程分支集成”是什么意思?我正在研究我在本地创建的功能分支。当我运行“git push”时,它会将我的分支推到遥控器吗?
答案 0 :(得分:1)
您可以在push.default
here
simple
旨在成为新git版本中的'可能做你想要的'默认值。这是current
和upstream
之间的中途。
我们假设您正在处理名为foo
的分支。
current
表示如果你要告诉git推送到你通常从(git push
或git push origin
)拉出来的地方,或者你告诉它推送到其他一些远程存储库(git push somewhere_else
),它会将名为foo
的分支推送到也称为foo
的远程分支。这意味着git push
将被解释为git push origin foo:foo
。
upstream
意味着如果你告诉git推送到你通常拉出的地方,它会将分支推送到它正在跟踪的任何远程分支 - 即你从拉动时获得更新的分支。您可以在存储库的config
文件夹中的.git
文件中找到它。例如,如果它包含
[branch "foo"]
remote = origin
merge = refs/heads/bar
那么这意味着当你签出分支git push
时,直截了当的foo
将推送到origin/bar
,因此它等同于git push origin foo:bar
。
upstream
只有当你推到你拉的地方时才有意义。如果您的本地分支没有跟踪上游分支,则不会发生任何事情(尽管git会建议使用单行push-and-start-tracking命令,见下文)。
simple
与upstream
的效果相同,如果你在其他地方推动,则与current
相同。
现在,您在帖子中提到您正在处理本地分支,这可能意味着它不会跟踪远程端的任何内容。您可以使用以下内容推动分支并使其跟踪推送到的位置:
git push --set-upstream origin foo:bar
退出:bar
将使其推送到与本地分支同名的分支。