tl;dr:
git checkout master
不能切换到master分支,没有任何错误或输出信息,我不知道原因。其他分支都可以正常使用。
我有一个包含分支development
和master
的git仓库。我进行了一次全新的克隆操作,默认检出development
分支。
$ git clone <REPO-URL> --branch development
$ git branch -a
* development
origin/HEAD -> origin/development
origin/development
origin/master
$ git show-ref
656c781c2affc26792f857baf8e232de07101535 refs/heads/development
656c781c2affc26792f857baf8e232de07101535 refs/remotes/origin/HEAD
656c781c2affc26792f857baf8e232de07101535 refs/remotes/origin/development
cfee1a1761642453edf5d001565f23b50243ff09 refs/remotes/origin/master
指向的 ref 主分支是正确的,该提交确实存在,并且是我的主分支最新的提交。
到目前为止,一切看起来正常,但当我尝试切换到主分支时,出现了以下情况:
$ git checkout master
$ git branch
* development
从checkout没有任何消息,没有错误,也没有切换到分支。
我尝试过的事情:
- 从同一提交创建第二个分支
master2
=> checkout正常工作。 - 删除并重新创建本地和远程主分支=>仍然无法进行checkout
git checkout -b master --track origin/master
=>工作正常,但我认为不需要使用此命令,因为这是git checkout master
应自动执行的操作。- 提交并推送到主分支可以正常工作,但不会更改checkout问题
- 我尝试了几个git版本(1.9、2.2)和机器(linux、windows),问题在各个地方都出现。
有什么进一步的想法吗?我漏掉了什么?我的代码库是否损坏?我该如何修复?
git checkout master
创建一个本地的跟踪分支,就像git checkout -b master --track origin/master
那样?你不想创建一个与远程主分支不同的本地主分支,对吧?你是绝对正确的,只要有一个远程分支与匹配名称即可。我真的不知道为什么没有任何错误消息…… - Nils_M