8

我不知道我是否在滥用 Git,或者我是否遇到了配置问题。

我将我的 Github 存储库克隆到机器 A 和 B 上,然后在机器 AI 上执行:

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

然后在机器 BI 上执行:

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

在机器 AI 上然后执行:

git pull

然而它说:

There is no tracking information for the current branch

所以我必须这样做:

git branch --set-upstream branchA origin/branchA

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

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

PS当我pull在机器B上做时,为什么branchA默认不跟踪新分支?git branch不显示它(但它与-r)。我可以在默认情况下跟踪所有新的远程分支吗pull?

4

1 回答 1

13

因为git config push.default不返回任何内容,这意味着使用“git 1.8.0.msysgit.0”,您的git push意思是git push origin :,refspec ' :' 代表“匹配”分支。

在这里,它在远程端创建匹配branchA

但这并不能使它成为一个远程跟踪分支。
换句话说,branch.branchA.merge没有设置任何东西。
这就是 git pull 失败的原因:它不知道应该合并到哪个远程分支到 local 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 push 会失败。
推送的唯一方法branchA是明确设置其上游分支(使用相同的名称):

git push -u origin branchA
于 2012-12-14T21:21:01.993 回答