Git错误 "fatal: XXX不是一个提交,无法从中创建分支YYY"

11

我正在尝试将远程仓库中的分支检出到本地分支,并收到上述错误。

对于那些想要指导我的人可以查看:为什么不是提交,无法从中创建分支?,那么我已经尝试过获取(fetching),甚至使用了git fetch --all

更准确地说,我无法检出Github仓库上除正在跟踪的主要分支外的任何分支,让我们称其为dev

所以,我可以执行以下操作:

git checkout origin/dev -b my_own_dev_env

但我无法检出任何其他分支,甚至不能检出

git checkout origin/master -b master

在这种情况下,我收到以下错误:

"fatal: 'origin/master' 不是一个提交(commit),且不能从它创建分支 'master'"

编辑: 当克隆到新目录时,我可以像平常一样执行所有的 git 操作。 因此,我想知道在本地副本中可能出现什么问题,阻止 git 命令正常工作?


1
我们需要更多的信息。让我们从以下问题开始:如果您创建了一个干净的克隆版本,您能否检出您的分支?您能确认该分支在远程上存在吗?origin 的配置是什么等等? - Liam
(1) 在你的引用文本中,那个反斜杠是做什么用的?是复制错误吗?(使用剪切和粘贴来避免打字错误。) (2) 你最初使用了 git clone --single-branch 吗? - torek
嗯,如果“git fetch”未创建或更新相应的远程跟踪名称,则它肯定会像单分支克隆一样运行。执行“git config --get-all remote.origin.fetch”会产生什么结果? - torek
3
啊哈,这就是 --single-branch 的设置。如果你没有使用 git clone --depth 或者 git clone --single-branch,那么你一定是以其他方式进行了设置。将其恢复为正常状态,然后 git fetch 就可以让 git checkout 再次工作了。请参考 https://dev59.com/e2Mm5IYBdhLWcg3wT9mU。 - torek
太不可思议了!可能是我的PyCharm在后台做了一些改变。我没有在命令行中输入single_branch命令。欢迎您将其作为答案编写,我会将其标记为最佳答案以供帮助。 - Investing TS
显示剩余3条评论
2个回答

8

首先通过执行以下命令检查是否已经获取了所有分支。

git fetch --all

检查本地是否存在分支名称

git branch -a

执行命令以跟踪远程分支并在本地创建一个

git checkout -t origin/<Branch Name>

2

你的远程仓库可能有受限制的拉取配置。查看 .git/config 文件以查看你的远程仓库是否有以下类似配置。

[remote "origin"]
    url = <url>
    fetch = +refs/heads/main:refs/remotes/origin/main

因此,git fetch 只会获取 main。要修复它,您可以将其更新为

[remote "origin"]
    url = <url>
    fetch = +refs/heads/*:refs/remotes/origin/*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接