ver tipos tag repositorio que modificados etiquetas crear archivos git

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 excluidos

Pasamos meticulosamente el indicador de exclude a la función treat_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 sin git status --ignored --untracked con un submódulo de submodule en un gitignored tracked/ 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/