git checkout master 不切换分支 - 存储库坏了?
git checkout master does not switch branch - repository broken?
tl;dr: git checkout master
没有切换到 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),到处都是问题。
还有什么想法吗?我错过了什么?我的存储库坏了吗?我该如何解决这个问题?
您存储库中的本地 master 分支与您存储库中的任何其他本地分支没有区别。您将存储库克隆到开发分支,这是您拥有的唯一本地分支。因此,如果您尝试结帐到本地主分支,git 会说它不存在。
如果您希望 development 和 master 本地分支最初相同,您可以执行以下操作之一:
下载你的repo到master分支,并创建一个本地开发分支:
git clone <repo_url>
git checkout -b development
或者下载你的repo到开发分支,并创建一个本地master分支:
git clone <REPO-URL> --branch development
git checkout -b master
当源代码树中有一个文件夹 master 时,我看到了类似的东西。不幸的是,我没有找到一种方法来告诉 git 将该值解释为一个分支。重命名文件夹解决了我的问题。
如果你的 repo 有一个文件夹或文件名与分支名称相同,那么你将需要:git checkout xyz --
并在末尾添加额外的 --
。它告诉 git 使用分支或提交而不是尝试使用 folder/file 名称。
在另一个 Whosebug 上找到答案 post:Git change branch when file of same name is present
已接受的答案(重命名文件夹)有效。如果您不想这样做,这里有一个我在 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
,您会注意到该分支出现在分支列表中
tl;dr: git checkout master
没有切换到 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),到处都是问题。
还有什么想法吗?我错过了什么?我的存储库坏了吗?我该如何解决这个问题?
您存储库中的本地 master 分支与您存储库中的任何其他本地分支没有区别。您将存储库克隆到开发分支,这是您拥有的唯一本地分支。因此,如果您尝试结帐到本地主分支,git 会说它不存在。
如果您希望 development 和 master 本地分支最初相同,您可以执行以下操作之一:
下载你的repo到master分支,并创建一个本地开发分支:
git clone <repo_url>
git checkout -b development
或者下载你的repo到开发分支,并创建一个本地master分支:
git clone <REPO-URL> --branch development
git checkout -b master
当源代码树中有一个文件夹 master 时,我看到了类似的东西。不幸的是,我没有找到一种方法来告诉 git 将该值解释为一个分支。重命名文件夹解决了我的问题。
如果你的 repo 有一个文件夹或文件名与分支名称相同,那么你将需要:git checkout xyz --
并在末尾添加额外的 --
。它告诉 git 使用分支或提交而不是尝试使用 folder/file 名称。
在另一个 Whosebug 上找到答案 post:Git change branch when file of same name is present
已接受的答案(重命名文件夹)有效。如果您不想这样做,这里有一个我在 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