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

Por*_*Man 2 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/*
Run Code Online (Sandbox Code Playgroud)

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

tor*_*rek 5

首先回答最后一部分:

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

目前最简单的方法是运行:

git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
Run Code Online (Sandbox Code Playgroud)

以便添加此配置行.

描述

这个:

remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)

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

什么会把它放在本地配置中,

运行:

git clone <url>
Run Code Online (Sandbox Code Playgroud)

将这样做,作为这个六步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.

为什么它可能会丢失其中一个系统,

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

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