Git 分支:跟踪上游

问题描述 投票:0回答:1

我不知道是我误用了 Git,还是我遇到了配置问题。

我将 GitHub 存储库克隆到机器 A 和 B 上,然后在机器 A 上:

git checkout -b branchA
// make edits
git add .
git commit -am "initial"
git push

然后在机器 B 上我做:

git pull
git checkout branchA
// make edits
git commit -am "edits"
git push

在机器 A 上我会这样做:

git pull

然而它说:

There is no tracking information for the current branch

所以我必须做:

git branch --set-upstream branchA origin/branchA

为什么我必须设置上游,当它最初将其推送到origin/branchA没有问题时?

我正在使用 msygit 1.8。在 Windows 上。

附注当我在机器 B 上执行

pull
时,为什么默认情况下不跟踪新分支
branchA
git branch
不显示(但与
-r
一起显示)。当我
pull?

时,我可以默认跟踪所有新的远程分支吗?
git
1个回答
14
投票

因为

git config push.default
不返回任何内容,这意味着,对于“git 1.8.0.msysgit.0”,您的
git push
意味着
git push origin :
,而 refspec '
:
' 代表“匹配”分支。

这里它会在远程端创建一个匹配的

branchA

但这并不意味着它成为远程跟踪分支。
换句话说,

branch.branchA.merge
未设置任何内容。
这就是 git pull 失败的原因:它不知道应该将哪个远程分支合并到本地
branchA


注意,您的第一个

git push
应该显示以下消息:

warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

所以,使用Git2.0,git推送将会失败。
推送

branchA
的唯一方法是显式设置其上游分支(使用相同的名称):

git push -u origin branchA
© www.soinside.com 2019 - 2024. All rights reserved.