git y libgit: no se puede crear el file (no existe ningún file o directory)

Estoy creando un repository de git y un commit utilizando libgit2 (en C ++). Funciona bien, sin embargo, un checkout destruye todos los files locales.

Sin embargo, parece que todavía están presentes en el repository. Eso es lo que obtengo cuando trato de search en el repository.

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: Unregistenetworking User <unregistenetworking@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...)) $ 

Ahora, lo que es "raro" es que si creo manualmente los directorys db \ xx, el pago -f funciona.

Aún más raro, todo funciona como está bajo MacOSx pero no Windows …

¿Alguna idea de lo que está pasando aquí?

 $ git checkout a63cd37ef7d7228053b875e396531d367e2ea745 D "db\\32\\879a83081b8d0b4ef41a37b9e28138" 

Ver las citas? git utilizará convenciones literales de cadenas C para mostrar nombres de files con caracteres inusuales en ellos. Su informe registra un file con esa cadena C como su nombre, incluidas las barras invertidas.

: , \ , y / no son inválidos en todas partes,

 $ touch "db\\32\\879a83081b8d0b4ef41a37b9e28138" $ ls db\32\879a83081b8d0b4ef41a37b9e28138 $ git add . $ git ls-files "db\\32\\879a83081b8d0b4ef41a37b9e28138" $ 

pero no son portátiles.

En términos generales, los filesystems de Windows reservan \ y : Mac, : , Unix, / . Todavía puede haber sistemas que se reservan ; .

¿Puedes verificar si estás en MacOSx y en Windows en un estado Head separado?

Otra idea sería las diferencias del sistema de files, ¿tal vez puedes encontrar algo relacionado con esto?