我有一个“被跟踪”的分支,我拉不出来。
所以我现在在“bucket-4”中:
$ git branch -v
bucket-1 410f7b5 * gh-53 * gh-48 * "Share App"
bucket-2 7ed70a2 * upgrade to SOLR 3.3.0
bucket-3 400ffe4 * emergency fix prod issue
* bucket-4 64c2414 Merge branch 'bucket-3' into bucket-4
master 8dc4854 [ahead 1] * gh-73我想从我的遥控器获取更改:
$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.bucket-4.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.
If you often merge with the same branch, you may want to
use something like the following in your configuration file:
[branch "bucket-4"]
remote = <nickname>
merge = <remote-ref>
[remote "<nickname>"]
url = <url>
fetch = <refspec>
See git-config(1) for details.嗯,奇怪的是,我以为我已经添加了"bucket-4“作为跟踪分支。让我们看看:
$ git remote show origin
* remote origin
Fetch URL: git@github.com:abcd/main.git
Push URL: git@github.com:abcd/main.git
HEAD branch (remote HEAD is ambiguous, may be one of the following):
bucket-3
master
Remote branches:
bucket-1 tracked
bucket-2 tracked
bucket-3 tracked
bucket-4 tracked
master tracked
Local branches configured for 'git pull':
bucket-1 merges with remote bucket-1
bucket-2 merges with remote bucket-2
bucket-3 merges with remote bucket-3
master merges with remote master
Local refs configured for 'git push':
bucket-1 pushes to bucket-1 (up to date)
bucket-2 pushes to bucket-2 (up to date)
bucket-3 pushes to bucket-3 (up to date)
bucket-4 pushes to bucket-4 (local out of date)
master pushes to master (fast-forwardable)实际上,bucket-4被标记为"tracked",但不知何故它被配置为push,而不是pull。
查看我的.git/config文件,我看到我的大多数分支都有"remote“和"merge”条目,但不是bucket-4。如果没有这个,它怎么会被认为是“被跟踪的”呢?
[remote "origin"]
url = git@github.com:abcd/main.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "rel-2011-07-07"]
remote = origin
merge = refs/heads/rel-2011-07-07
[branch "bucket-1"]
remote = origin
merge = refs/heads/bucket-1
[branch "bucket-2"]
remote = origin
merge = refs/heads/bucket-2
[branch]
autosetupmerge = true
[branch "bucket-3"]
remote = origin
merge = refs/heads/bucket-3我看到这里可能的解决方案是在我的配置文件中添加remote/merge -4的存储桶条目。但是,如果没有这个,它怎么被认为是“被跟踪的”呢?bucket-4是在本地创建的,然后从该存储库推送到服务器,因此我怀疑不知何故没有为该分支正确设置跟踪。
是否有一些配置我可以添加,以便让所有本地分支在将来正确地跟踪它们的远程?
发布于 2011-09-12 21:14:16
它显示为bucket-4 pushes to bucket-4,只是因为推送分支时的默认设置是将其推送到遥控器上具有匹配名称的分支。(请注意,这仍然是默认设置,即使本地分支正在跟踪远程跟踪分支,并且远程跟踪分支对应于远程存储库中具有不同名称的分支。)
在origin中设置bucket-4和bucket-4之间的关联的最简单方法是确保下次推送时执行以下操作:
git push -u origin bucket-4或者,您可以执行以下操作:
git branch --set-upstream-to origin/bucket-4直接回答你的几个问题:
如果没有这个,它怎么会被认为是“被跟踪的”呢?
在本例中,它不是-如果您的git配置中没有branch.bucket-4.merge或branch.bucket-4.remote,它就不会以任何方式跟踪远程跟踪分支。git remote show origin的输出只是向您展示了默认情况下分支将被推送到何处。
是否有一些我可以添加的配置,以便让所有本地分支在将来正确地跟踪它们的远程?
我不认为有。当您在本地创建bucket-4时,远程跟踪分支并不存在,因此无法在此时设置它-这将是非常令人困惑的默认行为。您只需记住将该分支的第一个git push中的-u添加到其上游存储库。
我希望这会对你有所帮助。
发布于 2014-08-07 01:43:35
至少从1.8.2.3 (我的版本)开始,git branch --set-upstream <branch> origin/<branch>就被弃用了。
请改用git branch --set-upstream-to=origin/<branch> <branch>。
https://stackoverflow.com/questions/7388278
复制相似问题