repositorio - ¿Cómo puedo evitar que.gitignore aparezca en la lista de archivos sin seguimiento?
ignorar cambios git (19)
Creo que hay situaciones en las que ignorar el .gitignore es muy útil. Por ejemplo, cuando tienes varios equipos o un equipo grande trabajando en la misma base de código. En ese caso, necesita tener ciertas convenciones, una de esas convenciones es sobre lo que se ignora en el repositorio de git. Por lo general, se trata de ignorar los archivos y directorios creados por IDE o OS, algunos registros generados, etc.
Sin embargo, hay una fuerza que tiende a introducir cambios no convencionales en el archivo .gitignore
. El archivo .gitignore
puede ser modificado aún más por una persona irresponsable, por error, por una herramienta que se utiliza, o en algún otro caso.
Para tener una fuerza contraria a esto, podemos hacer lo siguiente:
- El .gitignore inicial debe reflejar la convención en equipo (s),
- Después de presionarlo, el .gitignore debe asegurarse agregando la entrada .gitignore y presionando ese cambio nuevamente.
.gitignore
archivo.gitignore
está " sellado " de esta manera.
El archivo .gitignore
" sellado " se puede cambiar, solo localmente, sin propagar esos cambiadores a otros miembros del equipo (s). Sin embargo, si un cambio se acuerda ampliamente en todo el (los) equipo (s), es posible "deseleccionarlo", cambiarlo y "sellarlo" nuevamente. Eso no se puede hacer por error, solo intencionalmente.
Lamentablemente, no puedes estar 100% protegido de la estupidez, pero de esta manera has hecho todo lo posible para evitar que sucedan cosas estúpidas.
Si tiene un equipo relativamente pequeño con muy buenos profesionales, esto no sería importante, pero incluso esos tipos apreciarían tener una cosa menos de qué preocuparse.
El uso de .git/info/exclude
es genial cuando no puede hacer nada con respecto a la configuración de la infraestructura, solo cubriendo su propio ** para no cometer errores.
Desde el punto de vista de lo que es correcto y lo que es incorrecto, estoy votando por tener la entrada .gitignore
dentro del archivo .gitignore
, que le da a todos la libertad de hacer lo que quieran localmente, pero no invadir a otros.
Acabo de hacer un git init
en la raíz de mi nuevo proyecto.
Entonces creé un archivo .gitignore
.
Ahora, cuando escribo el git status
, el archivo .gitignore aparece en la lista de archivos sin seguimiento. ¿Porqué es eso?
Después de agregar el archivo .gitignore
y confirmarlo, ya no aparecerá en la lista de "archivos sin seguimiento".
git add .gitignore
git commit -m "add .gitignore file"
git status
El archivo .gitignore
debe estar en su repositorio, por lo que debe agregarse y confirmarse, como sugiere el git status
. Tiene que ser parte del árbol de repositorio, para que los cambios en él se puedan fusionar y así sucesivamente.
Por lo tanto, agréguelo a su repositorio, no debe ser gitignored.
Si realmente desea, puede agregar .gitignore
al archivo .gitignore
si no desea que se .gitignore
. Sin embargo, en ese caso, es probable que sea mejor agregar los ignorados a .git/info/exclude
, un archivo local de pago especial que funciona como .gitignore pero no aparece en "git status" ya que está en la carpeta .git
.
Consulte también https://help.github.com/articles/ignoring-files
En mi caso, quiero excluir un archivo existente. Solo modificando .gitignore no funciona. Seguí estos pasos:
git rm --cached dirToFile/file.php
vim .gitignore
git commit -a
De esta manera, limpié de la memoria caché el archivo que quería excluir y luego lo agregué a .gitignore .
En primer lugar, como muchos otros ya han dicho, su .gitignore
debe ser rastreado por Git (y, por lo tanto, no debe ser ignorado). Déjame explicarte por qué.
(TL; DR: .gitignore
archivo .gitignore
y use un .gitignore
global para ignorar los archivos creados por su IDE o sistema operativo)
Git es, como usted probablemente ya sabe, un sistema de control de versiones distribuido . Esto significa que le permite alternar entre diferentes versiones (incluso si el desarrollo ha divergido en diferentes ramas) y también permite que varios desarrolladores trabajen en el mismo proyecto.
Aunque el seguimiento de su .gitignore
también tiene beneficios cuando cambia de instantáneas, la razón más importante para cometerlo es que querrá compartir el archivo con otros desarrolladores que están trabajando en el mismo proyecto. Al comprometer el archivo en Git, otros contribuyentes obtendrán automáticamente el archivo .gitignore
cuando .gitignore
el repositorio, por lo que no tendrán que preocuparse por cometer accidentalmente un archivo que no debería estar comprometido (como archivos de registro, directorios de caché, etc.). credenciales de la base de datos, etc.). Y si en algún momento se actualiza el .gitignore
del proyecto, simplemente pueden introducir esos cambios en lugar de tener que editar el archivo manualmente.
Por supuesto, habrá algunos archivos y carpetas que querrá ignorar, pero que son específicos para usted y no se aplican a otros desarrolladores. Sin embargo, esos no deben estar en el .gitignore
del proyecto. Hay otros dos lugares donde puedes ignorar archivos y carpetas:
- Los archivos y carpetas que son creados por su sistema operativo o IDE deben colocarse en un
.gitignore
global . El beneficio es que este.gitignore
se aplica a todos los repositorios en su computadora, por lo que no tiene que repetir esto para cada repositorio. Y no se comparte con otros desarrolladores, ya que podrían estar usando un sistema operativo y / o IDE diferente. - Los archivos que no pertenecen al
.gitignore
del proyecto, ni al.gitignore
global, pueden ignorarse utilizando lasyour_project_directory/.git/info/exclude
explícitas del repositorio enyour_project_directory/.git/info/exclude
. Este archivo no se compartirá con otros desarrolladores y es específico para ese único repositorio
En realidad, podría poner una línea ".gitignore" en su archivo ".gitignore". Esto causaría que el archivo ".gitignore" sea ignorado por git. Realmente no creo que sea una buena idea. Creo que el archivo de ignorar debe ser controlado y rastreado por versión. Solo estoy poniendo esto para completar.
Encontré que el mejor lugar para configurar una .DS_Store
a los molestos archivos .DS_Store
es en el archivo .git/info/exclude
.
IntelliJ parece hacer esto automáticamente cuando configuras un repositorio git en él.
Es muy posible que un usuario final desee que Git ignore el archivo ".gitignore" simplemente porque las carpetas específicas de IDE creadas por Eclipse probablemente no sean las mismas que NetBeans u otro IDE. Por lo tanto, para mantener el antagonista del código fuente IDE, hace la vida fácil tener una omisión de git personalizada que no se comparte con todo el equipo, ya que los desarrolladores individuales pueden usar diferentes IDE.
Esto parece funcionar solo para que su directorio actual haga que Git
ignore todos los archivos del repositorio.
actualizar este archivo
.git/info/exclude
con su comodín o nombre de archivo
*pyc *swp *~
La idea es colocar los archivos que son específicos de su proyecto en el archivo .gitignore
y (como ya se mencionó) agregarlo al repositorio. Por ejemplo, los .pyc
y .o
, los registros que crea el testinguite, algunos accesorios, etc.
Para los archivos que crea su propia configuración, pero que no necesariamente aparecerán para cada usuario (como los archivos .swp
si usa vim, directorios ocultos de ecplise y similares), debe usar .git/info/exclude
(como ya se mencionó).
Navegue hasta el directorio base de su repositorio git y ejecute el siguiente comando:
echo ''//.*'' >> .gitignore
Se ignorarán todos los archivos de puntos, incluido ese molesto .DS_Store si estás en un mac.
Por supuesto, el archivo .gitignore se muestra en el estado, porque no está rastreado, ¡y git lo ve como un nuevo y sabroso archivo para comer!
Sin embargo, dado que .gitignore es un archivo sin seguimiento, es un candidato que git ignora cuando lo pones en .gitignore.
Entonces, la respuesta es simple: simplemente añada la línea:
.gitignore # Ignore the hand that feeds!
a su archivo .gitignore!
Y, contrariamente a la respuesta de agosto, debo decir que no es que el archivo .gitignore deba estar en su repositorio. Simplemente sucede que puede ser, lo que a menudo es conveniente. Y probablemente sea cierto que esta es la razón por la que se creó .gitignore como alternativa a .git / info / exclude, que no tiene la opción de ser rastreado por el repositorio. En cualquier caso, la forma en que use su archivo .gitignore depende totalmente de usted.
Para referencia, consulte la página de manual de gitignore (5) en kernel.org.
Si alguien ya ha agregado un .gitignore
a su repositorio, pero desea hacer algunos cambios y hacer que se ignoren esos cambios, haga lo siguiente:
git update-index --assume-unchanged .gitignore
Si desea almacenar la lista de archivos ignorados fuera de su árbol Git, puede usar el archivo .git / info / exclude . Se aplica solo a su salida del repositorio.
Si ya has ingresado en .gitignore y quieres ignorarlo, revisa esta respuesta :
Intenta usar este comando:
git update-index --assume-unchanged FILENAME_TO_IGNORE
Para revertirlo (si alguna vez desea confirmar cambios), use:
git update-index --no-assume-unchanged
ACTUALIZACIÓN :
A continuación, se muestra cómo listar los archivos ''asumir que no han cambiado'' en el directorio actual:
git ls-files -v | grep -E "^[a-z]"
Como la opción
-v
utilizará letras minúsculas para los archivos ''asumir sin cambios''.
Solo en caso de que alguien más tenga el mismo dolor que nosotros tuvimos. Queríamos excluir un archivo que ya había sido confirmado.
Esta publicación fue mucho más útil: trabajar con .git / info / exclude demasiado tarde
Específicamente, lo que necesita para ignorar un archivo es usar el comando git remove Ver git rm ( http://www.kernel.org/pub/software/scm/git/docs/git-rm.html )
lo pruebas yendo
git rm --dry-run *.log
(si usted dice que quiere excluir todos los archivos de registro)
esto generará lo que se excluiría si lo ejecutaras.
entonces
lo ejecutas yendo
git rm *.log
(o cualquier ruta / expresión de nombre de archivo que desee)
Luego agregue una línea *.log
a su archivo .gitignore
.
También puede tener un archivo git .gitignore
usuario global que se aplicará automáticamente a todos sus repositorios. Esto es útil para los archivos IDE y editor (por ejemplo, archivos swp
y *~
para Vim). Cambie las ubicaciones de directorio para adaptarse a su sistema operativo
Agrega a tu archivo
~/.gitconfig
[core] excludesfile = /home/username/.gitignore
Cree un archivo
~/.gitignore
con patrones de archivo que se ignoraránGuarde sus archivos de puntos en otro repositorio para tener una copia de seguridad (opcional).
Cada vez que copie, inicie o clone un repositorio, también se usará su archivo gitignore global.
Tenga cuidado con el siguiente "problema" A veces desea agregar directorios pero no archivos dentro de esos directorios. La solución simple es crear un .gitignore con el siguiente contenido:
*
Esto funcionará bien hasta que se dé cuenta de que no se agregó el directorio (como se esperaba en su repositorio. El motivo es que el .gitignore también se ignorará, y por lo tanto el directorio está vacío. Por lo tanto, debe hacer algo como esto :
*
!.gitignore
.gitignore
se trata de ignorar otros archivos. git se trata de archivos, así que se trata de ignorar archivos. Sin embargo, como git funciona con archivos, este archivo debe estar allí como mecanismo para enumerar los otros nombres de archivos.
Si se llamara. .the_list_of_ignored_files
, podría ser un poco más obvio.
Una analogía es una lista de elementos de tareas pendientes que NO desea hacer. A menos que los incluya en algún lugar, es una lista de "cosas por hacer" que no sabrá de ellos.