我通常使用此命令切换分支
git fetch && git checkout branch
在那之后,我经常检查我是否正在通过git info
工作在我想要的分支上,这将突出显示我正在处理的本地分支(分支名称旁边有一个星号*)。
我今天遵循相同的模式,但即使在我运行git fetch && git checkout branch
之后,git仍然存在于主分支中。命令行中有 no error logs 。但在此之后,git info
会显示类似的内容(本地分支仍然是主,而不是我要切换到的分支线程)。
## Remote Branches:
origin/HEAD -> origin/master
origin/master
origin/threads
## Local Branches:
* master
与正常情况相比(当git checkout branch
按预期工作时) - 奇怪的是,有两个origin/master
,第一个origin/HEAD -> origin/master
似乎正常;我不确定第二个。
这里有一些奇怪的东西,但我还没弄明白。
答案 0 :(得分:1)
看起来我有一个分歧的主人。
奇怪的是,此命令未显示任何错误日志。
$ git fetch && git checkout threads # threads is the name of the branch
但是,
$ git fetch && git checkout master
Switched to branch 'master'
Your branch and 'origin/master' have diverged,
and have 7 and 3 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
和
$ git pull origin master
From <git_repo> # <git_repo> is the URL of the repo
* branch master -> FETCH_HEAD
Auto-merging <file> # <file> is the filename in question
CONFLICT (add/add): Merge conflict in <file>
Automatic merge failed; fix conflicts and then commit the result.
在我手动解决主上的冲突后,现在git fetch && git checkout threads
工作正常,我可以切换到分支线程。
至于为什么我在第一个中有一个分歧的主人,我不确定 - 也许是因为某些git rebase
命令我没有做好
答案 1 :(得分:0)
请注意,git fetch
只会提取.git/config
文件中配置的引用 - 它可能无法满足您的期望。如果您还没有设置远程跟踪分支,那么它就不会知道从远程分支机构下来。
此外,&#39; git checkout master&#39;将始终切换到名为master的分支,而不是远程主机恰好是什么。因此,您已经创建了一个名为&#39; master&#39;以上不会改变它。