tipos - que es un repositorio git
¿Ignoras un submódulo de git en tu.gitignore o lo comprometes con tu repositorio? (1)
He agregado un submódulo a mi proyecto en project_dir/vendor/submodule_one
ahora cada vez que ejecuto git status
me modified: vendor/submodule_one (new commits)
.
Mi pregunta es ¿cuál es la mejor manera de lidiar con esto? ¿Agrego el vendor/submodule_one
-folder a mi .gitignore
ya que mi proyecto principal no debería necesitar información sobre los detalles de mi submódulo?
¿O cuando estoy cambiando y comprometiendo cambios en mi submódulo, también necesito hacer commits en mi proyecto principal?
Acabo de comenzar con los submódulos y parece que no puede encontrar mucha información más allá de configurarlos.
No, no necesita agregar su submódulo a su .gitignore
: lo que el padre verá de su submódulo es un gitlink (una entrada especial, mode 160000
).
Eso significa que cualquier cambio realizado directamente en un submódulo debe ir seguido de una confirmación en el directorio padre.
De esta forma, el directorio padre registrará la confirmación correcta para el estado del submódulo: esa confirmación es el "gitlink" mencionado anteriormente;
Puede leer más acerca de esa política en " Actualización del submódulo git (naturaleza verdadera de los submódulos) ".
La idea principal detrás de los submódulos es un enfoque basado en componentes , donde hace referencia a otros repos en compromisos específicos. Pero si cambia algo en esos submódulos, también debe actualizar esas referencias en el repositorio principal.
Tenga en cuenta que con Git 2.13 (Q2 2017), sin ignorar el gitlink, aún puede ignorar el submódulo con:
git config submodule.<name>.active false
Consulte más información en " Ignore new commits for git submodule ".
Nota: con Git 2.15.x / 2.16 (Q1 2018), ignorar un submódulo es más preciso.
" git status --ignored --untracked
" no se detuvo en un árbol de trabajo de un proyecto separado que está incrustado en un directorio ignorado y en los archivos de ese otro proyecto, en lugar de simplemente mostrar el directorio como ignorado.
Ver commit fadb482 (25 de octubre de 2017) por Johannes Schindelin ( dscho
) .
(Fusionado por Junio C Hamano - gitster
- in commit da7996a , 06 nov 2017)
status
: no se confundan con los submódulos en los directorios excluidosPasamos meticulosamente el indicador de
exclude
a la funcióntreat_directory()
para que podamos indicar que los archivos en él se excluyen en lugar de no mostrarlos cuando se repiten.Pero aún no tratamos los submódulos de la misma manera.
Debido a eso, el
git status --ignored --untracked
singit status --ignored --untracked
con un submódulo desubmodule
en un gitignoredtracked/
mostraría el submódulo en la sección "Untracked files
", por ejemplo
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
tracked/submodule/
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
tracked/submodule/initial.t
En cambio, quisiéramos que muestre el submódulo en la sección "
Ignored files
":
On branch master
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
tracked/submodule/