dos
Git rastrea archivos, no directorios, y actualmente no podemos add
directorios vacíos (El truco estándar no agrega un directorio vacío, sino un archivo dentro, vea también el Preguntas más frecuentes).
Sin embargo, un idiota repo
puede contener un directorio vacío. Entonces, ¿qué sucede si clono un repositorio o pago una rama que contiene un directorio vacío? ¿Se crea en el árbol de trabajo?
Para configurar un repositorio de prueba con un directorio vacío, puede usar el siguiente script (ejecutarlo en un directorio temporal).
Sin embargo, al realizar el check-out, se ignora el directorio vacío. Aquí también, Git solo trabaja con archivos, no con directorios, incluso si estos últimos están presentes.
Github y tig
mostrar directorios vacíos, gitk
no es.
#!/bin/bash
set -e
echo ---- initialize the repo...
#rm -rf .git
git init
echo ---- create an empty tree object...
empty_tree=$(git mktree < /dev/null)
echo ---- create a parent tree containing the empty subtree...
root_tree_ls=$(echo -e 040000 tree $empty_tree\\tvacuum)
root_tree=$(echo "$root_tree_ls" | git mktree)
echo ---- commit...
commit_msg="This commit contains an empty directory"
commit=$(git commit-tree $root_tree -m "$commit_msg")
echo ---- create a branch...
git branch master $commit
# output the ids:
echo ----------------------------------------------------
echo "empty tree:" $empty_tree
echo "root tree: " $root_tree
echo "commit: " $commit
-
De hecho, esto agrega el árbol vacío al repositorio. Pero clonar el repositorio no crea el directorio vacío en su árbol de trabajo.
– manu
24 de diciembre de 2013 a las 22:49
-
para los no creyentes:
git archive master | tar tv
🙂– Michael Šrajer
21 de noviembre de 2019 a las 10:07