Estoy un poco confundido acerca de los pros y los contras de usar .git/info/exclude
y .gitignore
excluir archivos.
Ambos están al nivel del repositorio / proyecto, entonces, ¿en qué se diferencian y cuándo debemos usarlos .git/info/exclude
?
La ventaja de esto .gitignore
es que puede registrarse en el repositorio mismo, a diferencia .git/info/exclude
. Otra ventaja es que puede tener múltiples .gitignore
archivos, uno dentro de cada directorio / subdirectorio para reglas de ignorar específicas del directorio, a diferencia .git/info/exclude
.
Por lo tanto, .gitignore
está disponible en todos los clones del repositorio. Por lo tanto, en equipos grandes a todas las personas están ignorando el mismo tipo de archivos Ejemplo *.db
, *.log
. Y puede tener reglas de ignorar más específicas debido a múltiples .gitignore
.
.git/info/exclude
está disponible solo para clones individuales, por lo tanto, lo que una persona ignora en su clon no está disponible en el clon de otra persona. Por ejemplo, si alguien usa Eclipse
para el desarrollo, puede tener sentido que ese desarrollador agregue una .build
carpeta .git/info/exclude
porque otros desarrolladores pueden no estar usando Eclipse.
En general, las reglas de archivos / ignorar que se deben ignorar universalmente deben entrar .gitignore
, y de lo contrario, los archivos que desea ignorar solo en su clon local deben entrar.git/info/exclude
~/.gitignore
en tu comentario anterior. Tengo entendido que las reglas de ignorar pueden estar en 3 niveles:$PROJECT/.git/info/exclude
para reglas de ignorar específicas de (proyecto, usuario),$PROJECT/<any number of directories>/.gitignore
que es para reglas de ignorar específicas de proyecto en cualquier usuario en cualquier lugar (cuando se registra),~/.gitignore
para reglas de ignorar específicas de usuario para cualquier proyecto para ese usuario en esa máquina Con base en el objetivo, tienes que elegir el lugar para poner una entrada en.git rm --cached <path-name>
lo eliminará del repositorio, pero lo mantendrá localmente.git update-index --skip-worktree <path-name>
ignorará los cambios en el archivo, pero lo mantendrá en el repositorio. Por curiosidad: ¿Por qué quieres excluir el archivo sln? Es una parte importante de una solución .Net ¿verdad?Buscado en Google: 3 formas de excluir archivos
.gitignore
se aplica a cada clon de este repositorio (versionado, todos lo tendrán),.git/info/exclude
solo se aplica a su copia local de este repositorio (local, no compartido con otros),~/.gitignore
se aplica a todos los repositorios en su computadora (local, no compartido con otros).3.
en realidad requiere establecer una configuración en su computadora:fuente
.git/info/excludes
, cuando debería ser.git/info/exclude
, como lo confirma la documentación a la que se vincula.Solo para ofrecer nuestra experiencia (del mundo real): comenzamos a usar .git / info / exclude cuando tuvimos que personalizar algunos archivos de configuración en cada entorno de desarrollo, pero aún queríamos que la fuente se mantuviera en el repositorio y estuviera disponible para otros desarrolladores.
De esta forma, los archivos locales, una vez clonados y modificados, pueden excluirse de los commits sin afectar los archivos originales en el repositorio pero sin ser necesariamente ignorados en el repositorio.
fuente
Úselo
.gitignore
para ignorar las reglas que son específicas del proyecto . Utiliceexclude
o un archivo de ignorar global para ignorar las reglas que son específicas de su entorno .Por ejemplo, mis archivos globales de ignorar ignoran los archivos temporales generados por cualquier editor que esté usando; esa regla es específica de mi entorno y podría ser diferente para algún otro desarrollador en el mismo proyecto (tal vez usan un editor diferente). OTOH, mis
.gitignore
archivos de proyecto ignoran cosas como las claves de API y los artefactos de compilación, esos son para el proyecto y deberían ser los mismos para todos en el proyecto.¿Eso ayuda?
fuente