Git推动混乱 - 什么是"简单"意思?

时间:2014-11-10 20:20:47

标签: git push

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”时,它会将我的分支推到遥控器吗?

1 个答案:

答案 0 :(得分:1)

您可以在push.default here

上找到相关文档

simple旨在成为新git版本中的'可能做你想要的'默认值。这是currentupstream之间的中途。

我们假设您正在处理名为foo的分支。

current表示如果你要告诉git推送到你通常从(git pushgit 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命令,见下文)。

当你推到通常拉出的地方时,

simpleupstream的效果相同,如果你在其他地方推动,则与current相同。

现在,您在帖子中提到您正在处理本地分支,这可能意味着它不会跟踪远程端的任何内容。您可以使用以下内容推动分支并使其跟踪推送到的位置:

git push --set-upstream origin foo:bar

退出:bar将使其推送到与本地分支同名的分支。