在一台计算机上,调用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/*
将什么放在本地配置中,为什么它可能会从其中一个系统中丢失,以及解决问题的正确方法是什么?
答案 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步:
git init
。git config
操作。git remote add origin <url>
。git fetch origin
。git checkout <branch>
,其中<branch>
通常默认为master
。为什么它可能会从其中一个系统中遗漏,
不正在运行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>
开始运行的早期答案可以设置或者您可以按照上面的步骤解决问题