创建 git 存储库的稀疏和浅层克隆会导致错误:尝试写入非提交对象



我想在某个标签上创建一个稀疏而浅的 git 存储库克隆。

这是我目前正在做的事情:

git init avatica-tmp
cd avatica-tmp
git remote add origin https://github.com/apache/calcite-avatica/
git config core.sparsecheckout true
echo "core/src/main/protobuf/*" >> .git/info/sparse-checkout
git pull --depth=1 origin rel/avatica-1.10.0

它工作正常,但抛出错误:

remote: Counting objects: 531, done.
remote: Compressing objects: 100% (381/381), done.
remote: Total 531 (delta 147), reused 280 (delta 51), pack-reused 0
Receiving objects: 100% (531/531), 963.03 KiB | 233.00 KiB/s, done.
Resolving deltas: 100% (147/147), done.
From https://github.com/apache/calcite-avatica
* tag               rel/avatica-1.10.0 -> FETCH_HEAD
fatal: update_ref failed for ref 'HEAD': cannot update ref 'refs/heads/master': trying to write non-commit object fe4f0b4ea3e2ee4f3b2e82329363a7945493a8c9 to branch 'refs/heads/master'

我在 Ubuntu 2.11.0 上的 Git 17.04 和 Windows 2.13.2.windows.1 上的 Git 10 64 上收到此错误。我没有尝试克隆到映射的驱动器。

导致此错误的原因是什么,如何避免此错误?

您正在尝试将带注释的标签拉入当前分支,并在空存储库中使用浅克隆,我想这是问题所在,因为它试图将您的本地master分支设置为指向标签而 git 不喜欢它。

一种解决方案是使用 fetch 然后签出提取的标签:

git fetch --depth=1 origin rel/avatica-1.10.0
git checkout FETCH_HEAD

相关内容

最新更新