我正在使用 libgit2(在 C++ 中)创建一个 git 存储库和一个提交。它工作正常,但是,结帐会破坏所有本地文件。
但是它们似乎仍然存在于 repo 中。这就是我尝试查看存储库时得到的结果。
Welcome to Git (version 1.8.3-preview20130601)
Run 'git help git' to display the help index.
Run 'git help <command>' to display help for specific commands.
x@x-PC /C/Users/x/Desktop/poiu (master)
$ git log
commit a63cd37ef7d7228053b875e396531d367e2ea745
Author: Unregistered User <unregistered@x.com>
Date: Fri Oct 25 13:27:21 2013 +0200
Project Save
x@x-PC /C/Users/x/Desktop/poiu (master)
$ git checkout a63cd37ef7d7228053b875e396531d367e2ea745
D "db\\32\\879a83081b8d0b4ef41a37b9e28138"
D "db\\41\\930644af1f4ab6d288bf3d50829558"
D "db\\48\\3172d42be6ccb80e57071d5aabb584"
D "db\\80\\0b152a41ba2ef0bc1c55c96add4d33"
D "db\\c1\\3b1ce3276ed14d7ff7c6ace9b63cf3"
D "db\\fa\\50e29fe380a8117140463106ae67b1"
Note: checking out 'a63cd37ef7d7228053b875e396531d367e2ea745'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at a63cd37... Project Save
x@x-PC /C/Users/x/Desktop/poiu ((a63cd37...))
$ git checkout -f a63cd37ef7d7228053b875e396531d367e2ea745
error: unable to create file db\32\879a83081b8d0b4ef41a37b9e28138 (No such file or directory)
error: unable to create file db\41\930644af1f4ab6d288bf3d50829558 (No such file or directory)
error: unable to create file db\48\3172d42be6ccb80e57071d5aabb584 (No such file or directory)
error: unable to create file db\80\0b152a41ba2ef0bc1c55c96add4d33 (No such file or directory)
error: unable to create file db\c1\3b1ce3276ed14d7ff7c6ace9b63cf3 (No such file or directory)
error: unable to create file db\fa\50e29fe380a8117140463106ae67b1 (No such file or directory)
HEAD is now at a63cd37... Project Save
x@x-PC /C/Users/x/Desktop/poiu ((a63cd37...))
$
现在,“奇怪”的是,如果我事先手动创建 db\xx 目录,则 checkout -f 可以工作。
更奇怪的是,整个事情在 MacOSx 下按原样工作,但在 Windows 下却不行......
知道这里发生了什么吗?