¿Cuáles son las diferencias entre.gitignore y.gitkeep?


¿cuáles son las diferencias entre .gitignore y .gitkeep? ¿Son la misma cosa con un nombre diferente, o ambos cumplen una función diferente? No parece que pueda encontrar mucha documentación sobre .gitkeep.

 1467
Author: 7ochem, 2011-08-29

3 answers

.gitkeep no está documentado, porque no es una característica de Git.

Git no puede agregar un directorio completamente vacío. Las personas que quieren rastrear directorios vacíos en Git han creado la convención de poner archivos llamados .gitkeep en estos directorios. El archivo podría llamarse cualquier cosa; Git no asigna ningún significado especial a este nombre.

Existe una convención competitiva de agregar un archivo .gitignore a los directorios vacíos para rastrearlos, pero algunas personas ven esto como confuso dado que el objetivo es mantener los directorios vacíos, no ignorarlos; .gitignore también se usa para listar archivos que Git debería ignorar al buscar archivos sin seguimiento.

 2679
Author: Wooble,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-14 14:44:08

.gitkeep es solo un marcador de posición. Un archivo ficticio, por lo que git no se olvidará del directorio, ya que git solo rastrea archivos.


Si quieres un directorio vacío y te aseguras de que permanece 'limpio' para git, crea un .gitignore que contenga las siguientes líneas dentro de:

# .gitignore sample 
###################

# ignore all files in this dir...
*

# ... except for this one.
!.gitignore

Si deseas tener solo un tipo de archivos visibles para git, aquí hay un ejemplo de cómo filtrar todo, excepto .gitignore y todos los archivos .txt:

# .gitignore to keep just .txt files
###################################

# filter everything...
*

# ... except the .gitignore...
!.gitignore

# ... and all text files.
!*.txt

('#'indica comentarios.)

 235
Author: sjas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-30 20:34:48
.gitignore

Es un archivo de texto que contiene una lista de archivos en su directorio que git ignorará o no agregará/actualizará en el repositorio.

.gitkeep

Dado que git elimina o no agrega directorios vacíos a un repositorio .gitkeep es una especie de hackeo (no creo que sea oficialmente nombrado como parte de git) para mantener directorios vacíos en el repositorio.

Simplemente haga un touch /path/to/emptydirectory/.gitkeep para agregar el archivo y git ahora podrá mantener este directorio en el repositorio.

 101
Author: Jim Munro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-12 19:36:01