'git checkout'没有创建本地分支来匹配远程跟踪分支

时间:2017-11-14 21:45:08

标签: git

在一台计算机上,调用git checkout将不会创建本地分支。

例如,如果我有一个远程跟踪分支origin/master,我可以致电git checkout origin/master,它会正常工作,让我处于无头状态。

但如果我尝试拨打git checkout master,我会收到错误error: pathspec 'master' did not match any file(s) known to git.

我在另一台机器上试过这个,它运行得很好。

他们安装了完全相同的git版本(2.15.0.windows.1)。 git config --list显示了一个区别。正常工作的机器在其配置中具有以下行:

remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*

将什么放在本地配置中,为什么它可能会从其中一个系统中丢失,以及解决问题的正确方法是什么?

4 个答案:

答案 0 :(得分:5)

首先回答最后一部分:

  

以及解决问题的正确方法是什么?

此时最简单的方法是运行:

git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

以便添加此配置行。

描述

此:

remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*

remote.origin.fetch的正常标准设置。

  

将什么放在本地配置中,

运行:

git clone <url>

将执行此操作,作为此六步clone流程的第4步:

  1. 如果/在适当的时候创建新目录。 (如果您愿意,可以将其指向现有的空目录。)
  2. 在空目录中运行git init
  3. 在新的空存储库中运行任何指定的git config操作。
  4. 运行git remote add origin <url>
  5. 运行git fetch origin
  6. 运行git checkout <branch>,其中<branch>通常默认为master
  7.   

    为什么它可能会从其中一个系统中遗漏,

    正在运行git clone。如果您自己执行这些步骤,并执行奇怪的操作而不是步骤4,您将获得此设置。在某些Windows版本的Git中可能会出现某种错误,因为我最近看到过几个问题。

    (注意:正在运行git clone --single-branch -b <branch>会重定向git remote add步骤以使用-t <branch>,因此remote.origin.fetch将设置为标准设置以外的其他值。{{1顶部的命令将使用标准设置覆盖非标准设置。)

答案 1 :(得分:1)

在结帐分支之前,您应该运行fetch:

git fetch
git checkout master

答案 2 :(得分:0)

尝试

git remote -v

你应该看到正确的提取和推送分支。 否则你可以使用下面的命令

强制和设置它

git remote set-url origin <URL>

确保网址与您用于克隆存储库的网址完全相同。

答案 3 :(得分:0)

要按顺序回答问题,

问:在一台计算机上,调用git checkout将不会创建本地分支。

答:不,它不创建分支,使用git checkout -b 'branch_name'创建本地分支

问:但是如果我尝试调用git checkout master,我会收到错误错误:pathspec&#39; master&#39;与git已知的任何文件都不匹配。

答:那是因为您的暂存目录中没有更新远程引用。

按顺序在下面运行

git remote update应设置指向远程原始分支,包括主

git fetch - 从一个或多个其他存储库中获取分支和/或标记(统称为&#34; refs&#34;),以及完成其历史记录所需的对象。远程跟踪分支已更新(有关控制此行为的方法,请参阅下面的说明)。参考:https://git-scm.com/docs/git-fetch

git checkout master - 现在将从原始主人&amp;切换到它。

git clone <repo-url>开始运行的早期答案可以设置或者您可以按照上面的步骤解决问题