git checkout master 不切换分支 - 存储库损坏?

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

tl;dr

git checkout master
不会切换到主分支,没有给出任何错误或任何输出,我不知道为什么。任何其他分支都可以正常工作。

我有一个 git 存储库,由分支

development
master
组成。我对存储库进行了新的克隆,检查默认分支
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 master 指向的是正确的,该提交确实存在,并且是我的 master 分支的最新提交。

到目前为止,一切看起来都很正常,但是当我尝试切换到 master 时,就会发生这种情况:

$ git checkout master
$ git branch 
* development

结账时没有消息,没有错误,什么也没有,分支也没有切换。

到目前为止我尝试过的事情:

  • 从同一个提交创建第二个分支
    master2
    =>签出工作正常。
  • 删除并重新创建本地和源上的分支主 => 再次无法结账
  • git checkout -b master --track origin/master
    => 有效,但我认为没有必要使用此命令,因为这是
    git checkout master
    应该自动执行的操作
  • 提交并推送到 master 工作,但不会改变结帐问题
  • 我尝试了几个git版本(1.9、2.2)和机器(linux、windows),到处都出现问题。

还有什么进一步的想法吗?我缺少什么?我的存储库损坏了吗?我该如何解决这个问题?

git git-checkout
5个回答
33
投票

如果您的存储库具有与分支名称相同的文件夹或文件名,那么您将需要:

git checkout xyz --
,并在末尾添加额外的
--
。它告诉 git 使用分支或提交,而不是尝试使用文件夹/文件名。

在另一篇 stackoverflow 帖子中找到了答案:当同名文件存在时,Git 更改分支


20
投票

当源树中有一个文件夹 master 时,我看到了类似的东西。不幸的是我没有找到一种方法来告诉 git 将值解释为分支。重命名文件夹解决了我的问题。


4
投票

存储库中的本地主分支与存储库中的任何其他本地分支没有什么不同。您将存储库克隆到了开发分支,这是您拥有的唯一本地分支。因此,如果您尝试签出本地主分支,git 会说它不存在。

如果您希望开发和主本地分支最初相同,您可以执行以下操作之一:

将存储库下载到 master 分支,并创建本地开发分支:

git clone <repo_url>
git checkout -b development

或者将您的存储库下载到开发分支,并创建本地主分支:

git clone <REPO-URL> --branch development
git checkout -b master

0
投票

接受的答案(重命名文件夹)有效。如果您不想这样做,这里有一个我在

git version 2.14.1.windows.1
上测试过的解决方法。

删除有问题的文件夹。

执行

git branch <the branch you had trouble switching to>

执行

git branch <your original branch>

执行

git checkout -- .
撤消删除。

现在,您可以毫无问题地切换到所需的分支或从所需的分支切换,即使存储库中的文件夹名称与分支相同。如果执行

git branch

,您会注意到分支出现在分支列表中

0
投票

实际上,我通过首先克隆预期分支来解决这个问题,如下所示 - git 克隆 -b

然后你可以通过-切换到master git结帐大师

你也可以切换到 dev 分支 - git 结帐

所以这对我有用,请告诉我您的建议

[这是我的第一个答案:)]

© www.soinside.com 2019 - 2024. All rights reserved.