Estoy un poco confundido acerca de los pros y los contras de usar .git/info/excludey .gitignoreexcluir 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 .gitignorees que puede registrarse en el repositorio mismo, a diferencia .git/info/exclude. Otra ventaja es que puede tener múltiples .gitignorearchivos, uno dentro de cada directorio / subdirectorio para reglas de ignorar específicas del directorio, a diferencia .git/info/exclude.
Por lo tanto, .gitignoreestá 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/excludeestá 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 Eclipsepara el desarrollo, puede tener sentido que ese desarrollador agregue una .buildcarpeta .git/info/excludeporque 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
~/.gitignoreen tu comentario anterior. Tengo entendido que las reglas de ignorar pueden estar en 3 niveles:$PROJECT/.git/info/excludepara reglas de ignorar específicas de (proyecto, usuario),$PROJECT/<any number of directories>/.gitignoreque es para reglas de ignorar específicas de proyecto en cualquier usuario en cualquier lugar (cuando se registra),~/.gitignorepara 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
.gitignorese aplica a cada clon de este repositorio (versionado, todos lo tendrán),.git/info/excludesolo se aplica a su copia local de este repositorio (local, no compartido con otros),~/.gitignorese 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
.gitignorepara ignorar las reglas que son específicas del proyecto . Utiliceexcludeo 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
.gitignorearchivos 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