info/refs not found
当我克隆本地存储库并通过 http 提供服务时,我遇到了同样的错误。
似乎克隆存储库不会创建 info/refs 文件,因此无法远程提供它(https、ssh 等),因为如果不列出 .git 文件夹,就无法远程获取主分支的名称,因此 info/refs 提供了当前 git 存储库 HEAD 的路径和 commitid。
mkdir clone-without-refs; cd clone-without-refs
git clone ../origin.git .
ls -l .git/info
所以我以这种方式手动创建了它(在源存储库中,假设您运行一种/bin/sh
shell)
gitid=$(git rev-parse HEAD)
echo HEAD: $gitid
echo -e "$gitid\trefs/heads/master" > .git/info/refs
if [ ! -e .git/refs/heads/master ]; then
echo $gitid > .git/refs/heads/master
fi
然后我再次进行了克隆并且它起作用了($origin
用你的改变):
rm -rf ../cloned
# checking if refs file is there (httpds server side):
origin="http://localhost:8080/~$USER/$(pwd|sed -e "s,$HOME/,,")/.git"
curl $origin/info/refs
git clone $origin ../cloned
# verify
git -C ../cloned log -2