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

时间:2015-12-15 11:12:20

标签: git git-checkout

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

我有一个由分支developmentmaster组成的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 master指向的是正确的,该提交确实存在并且是我的主分支的最新提交。

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

$ git checkout master
$ git branch 
* development

没有来自结账的消息,没有错误,没有任何消息,并且没有切换分支。

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

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

还有什么想法吗?我错过了什么?我的存储库坏了吗?我该如何解决这个问题?

4 个答案:

答案 0 :(得分:22)

如果您的仓库的文件夹或文件名与分支名称相同,那么您需要:<option disabled selected value="">Tipo de imóvel</option> 并在末尾添加额外的Declare @ReportYear as int = 2017; --this should show all customers with invioices for these months in both 2017 and 2016 select a.customerid, a.monthinvoice from ( --get people with invoice last year Select distinct customerid, monthinvoice from Invoices i0 where yearinvoice = @ReportYear - 1 ) a join ( --get people with invoice this year Select distinct customerid, monthinvoice from Invoices i0 where yearinvoice = @ReportYear ) b on a.customerid = b.customerid and a.monthinvoice = b.monthinvoice 。它告诉git使用分支或提交而不是尝试使用文件夹/文件名。

在另一个stackoverflow帖子上找到答案:Git change branch when file of same name is present

答案 1 :(得分:17)

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

答案 2 :(得分:3)

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

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

将您的仓库下载到主分支,并创建一个本地开发分支:

git clone <repo_url>
git checkout -b development

或将您的repo下载到开发分支,并创建一个本地主分支:

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

答案 3 :(得分: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

,您会注意到分支显示在分支列表中