Mi .gitignore
archivo parece estar siendo ignorado por Git, ¿podría .gitignore
estar dañado? ¿Qué formato de archivo, configuración regional o cultura espera Git?
Mi .gitignore
:
# This is a comment
debug.log
nbproject/
Salida de git status
:
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# debug.log
# nbproject/
nothing added to commit but untracked files present (use "git add" to track)
Me gustaría debug.log
y nbproject/
no aparecer en la lista de archivos sin seguimiento.
¿Dónde debería comenzar a buscar para solucionar esto?
.gitignore
archivo useANSI
oUTF-8
codifique. Si usa algo comoUnicode BOM
, es posible que Git no pueda leer el archivo.echo "file" > .gitignore
en PowerShell, ¡el archivo tenía una codificación UCS-2!git rm --cached debug.log nbproject/
Respuestas:
Incluso si no ha rastreado los archivos hasta ahora, Git parece ser capaz de "saber" sobre ellos incluso después de agregarlos
.gitignore
.ADVERTENCIA: Primero confirme sus cambios actuales, o los perderá.
Luego ejecute los siguientes comandos desde la carpeta superior de su repositorio Git:
fuente
Si parece que Git no se da cuenta de los cambios que realizó en su
.gitignore
archivo, es posible que desee verificar los siguientes puntos:.gitignore
archivo global que pueda interferir con el local.Cuando agrega algo en un archivo .gitignore, intente esto:
Si elimina algo de un archivo .gitignore, y los pasos anteriores tal vez no funcionen, si descubrió que los pasos anteriores no funcionan, intente esto :
fuente
git rm -r --cached .
funcionó para míFijo. OK, creé el archivo .gitignore en el Bloc de notas en Windows y no funcionaba. Cuando vi el archivo .gitignore en Linux, parecía un galimatías organizado: tal vez el Bloc de notas había escrito Unicode en lugar de ASCII o lo que sea de 8 bits.
Así que reescribí el archivo en mi caja de Linux, y cuando lo recuperé en Windows, ¡funciona bien! ¡Hurra!
fuente
Sin agregar otro compromiso a su proyecto, una línea será suficiente para que
.gitignore
funcione como se supone que debe:Esto los eliminará del repositorio, pero los mantendrá físicamente. En inglés simple, elimina cualquier historial de cambios relacionados con ellos, y tampoco realizará un seguimiento de su cambio en ninguna confirmación futura. Puede encontrar una mejor explicación aquí .
fuente
git rm -r --cached someFile.php
y funcionó a lasOtra causa de este problema son los espacios en blanco o las pestañas antes de la declaración:
Ejemplo:
Y como lo señala el comentario a continuación, un espacio final también puede ser un problema:
fuente
*.txt # Tex files
. Pero git entiende: "Ignora los archivos con la extensióntxt
"Me di cuenta de que la codificación de la
.gitignore
estaba teniendo un efecto: si el archivo era Unicode, se ignoraba, si era ASCII, no lo era.Proceso:
PS> git status
.gitignore
de codificación:PS> Get-FileEncoding .gitignore
PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
PS> git status
fuente
touch .gitignore
yecho ".db" >> .gitignore
a través de powershell. Descubrí queecho ".db" >> .gitignore"
estaba configurando la codificación del archivo a UCS-2 LE-BOM, una conversión rápida a ASCII y el gitignore comenzó a funcionar.Al igual que con las otras soluciones, comprometerse primero y ser consciente de que va a perder cualquier cambio un-comprometidos.
Tuve mejores resultados con esto:
Tenga en cuenta que el estado no debería tener ningún archivo modificado ahora.
fuente
En mi caso, es porque los archivos ya existen en el repositorio y estoy tratando de ignorarlo.
Estas son las cosas que hice para solucionar el problema:
Para entonces, cualquier cambio que hice en esos archivos fue ignorado.
Creo que no puede ignorar los archivos que ya existen en el repositorio.
fuente
Todas las respuestas aquí son en realidad soluciones alternativas. Debe crear el archivo .gitignore antes de ejecutarlo
git init
. Degit
lo contrario , nunca sabrá que debe ignorar esos archivos, porque ya han sido rastreados.Si se desarrolla a diario, le aconsejo que agregue sus archivos habituales ignorados a su
~/.gitignore_global
archivo. De esa manera,git
ya sabrá qué archivos (generalmente significa "su usuario", ya que es un archivo en su directorio personal) generalmente ignora.fuente
~/.gitignore_global
es un nombre configurable Ejecutegit config --global core.excludesfile
primero para ver si ya tiene un archivo definido. Si no, corregit config --global core.excludesfile ~/.gitignore_global
..gitignore
primero: cambie el nombre del archivo rastreado..gitignore
se aplicará como si fuera nuevo.También mira el directorio donde pones
.gitignore
.Debe estar en la raíz de su proyecto :
No en
fuente
Específicamente para usuarios de Windows: si tiene archivos sin seguimiento y borrar / eliminar los archivos en caché no funciona. Intente abrir PowerShell y convertir el archivo .gitignore a la codificación UTF-8:
Solo necesita hacer esto una vez para codificar el archivo .gitignore para ese directorio, y dado que el archivo se codifica correctamente, cada vez que edite el archivo en el futuro debería funcionar. Creo que esto se debe a una falla con GitHub que no está a punto de leer la codificación no UTF-8 para un archivo .gitignore. Hasta donde sé, este problema aún no se ha resuelto para Windows. No es un gran problema, solo un dolor de depuración cuando no está funcionando.
fuente
Hay otro problema con
.gitignore
eso que puede suceder, especialmente para un usuario de Windows. A Git no le gusta cuando lo nombras.gitignore
(comounity.gitignore
).Siempre querrá nombrarlo
.gitignore
, o en Windows,.gitignore.
ya que Windows cree que está tratando de cambiarle el nombre sin un nombre de archivo.fuente
Acabo de encontrarme con este problema. El contenido dentro de mi archivo .gitignore continuó apareciendo en la lista de archivos sin seguimiento.
Estaba usando esto para crear el archivo de ignorar:
Resulta que las comillas dobles me estaban causando el problema. Eliminé el archivo de ignorar y luego usé el comando nuevamente sin comillas, y funcionó como se esperaba. No tuve que meterme con la codificación del archivo. Estoy en una máquina con Windows 10 usando Cmder .
Ejemplo:
fuente
Para mí ninguna de las respuestas anteriores funcionó. Tuve que copiar
.gitignore
texto en elexclude.txt
archivo encontrado enUna vez hecho esto, actualice sus cambios y todos los archivos no rastreados desaparecerán. Comprométete como siempre.
fuente
Mi problema fue (como OP sugirió) un archivo corrupto .gitignore. No creía que así fuera e ignoré la posibilidad hasta que todo lo demás falló. La corrupción no apareció
vi
, pero había dos bytes al comienzo del archivo que hicieron que se ignorara el archivo .gitignore. Para mí, estos solo aparecieron cuando escribícat .gitignore
, lo que mostró:No tengo idea de cómo terminaron allí, pero volver a crear el archivo solucionó el problema. Un análisis hexadecimal del archivo dañado mostró lo siguiente:
fuente
Tuve este problema, con un archivo .gitignore que contiene esta línea:
Me acabo de dar cuenta de que, de hecho, este directorio es un enlace simbólico a una carpeta en otro lugar:
En la línea
lib/ext/
, Git realmente busca una carpeta , pero un enlace simbólico es un archivo , así que milib
carpeta no se ignora.Lo arreglé reemplazándolo
lib/ext/
porlib/ext
en mi archivo .gitignore.fuente
Yo tuve el mísmo problema. Creo que el problema era una discrepancia CR vs. CR + LF. Guardé cosas en mi .gitignore usando CMD (en Windows 7) y el siguiente comando:
Malo:
Etc.
El problema era que este comando no coloca el marcador de fin de línea correcto para que Git reconozca las nuevas líneas (CR o CR + LF cuando Git espera el otro). Resolví el problema reemplazando manualmente cada nueva línea en Vim (¡Vim al rescate!) Y funcionó perfectamente.
Intente editar su .gitignore en Notepad ++ o Vim (idealmente). Incluso si el archivo parece estar formateado correctamente, intente reemplazar las nuevas líneas. Suena raro, lo sé, pero funcionó para mí. :RE
fuente
OK, en mi caso la solución aceptada no funcionó, y lo que funcionó se describe aquí:
¿Visual Studio 2013 ignora su archivo .gitignore?
En breve:
ms-persist.xml
fuente
Una cosa a tener en cuenta también: ¿está guardando su archivo .gitignore con las terminaciones de línea correctas?
Ventanas:
Si lo está utilizando en Windows, ¿lo está guardando con los finales de línea de Windows? No todos los programas harán esto por defecto; Notepad ++ y muchos editores PHP predeterminan las terminaciones de línea de Linux para que los archivos sean compatibles con el servidor. Una manera fácil de verificar esto es abrir el archivo en el Bloc de notas de Windows. Si todo aparece en una línea, el archivo se guardó con finales de línea de Linux.
Linux:
Si tiene problemas con el archivo que funciona en un entorno Linux, abra el archivo en un editor como Emacs o nano . Si ve caracteres no imprimibles, el archivo se guardó con finales de línea de Windows.
fuente
Otra posible razón : algunas instancias de clientes Git ejecutándose al mismo tiempo . Por ejemplo, "git shell" + "GitHub Desktop", etc.
Esto me paso a mi. Estaba usando "GitHub Desktop" como el cliente principal, e ignoraba algunas configuraciones nuevas de .gitignore: commit after commit:
Motivo : el editor de Visual Studio Code se estaba ejecutando en segundo plano con el mismo repositorio abierto. Visual Studio Code tiene control Git incorporado, y esto crea algunos conflictos.
Solución : verifique dos clientes Git múltiples y ocultos y use solo un cliente Git a la vez, especialmente al borrar la caché de Git.
fuente
Ya hay algunas respuestas geniales, pero mi situación era tediosa. Edité la fuente de un software PLM (gestión del ciclo de vida del producto) instalado en Win10 y luego decidí: "Probablemente debería haber hecho de esto un repositorio git".
Entonces, la opción de caché no funcionará para mí, directamente. Publicar para otros que pueden haber agregado control de fuente DESPUÉS de hacer un montón de trabajo inicial Y
.gitignore
no funciona PERO, es posible que tengas miedo de perder un montón de trabajo, asígit rm --cached
que no es para ti.!IMPORTANTE: Esto es realmente porque agregué git demasiado tarde a un "proyecto" que es demasiado grande y parece ignorar mi .gitignore. No me comprometo, nunca. Puedo irme con esto :)
Primero, acabo de hacer:
Entonces, tuve que tener una foto de mis cambios. Nuevamente, este es un producto de instalación en el que he realizado cambios. Demasiado tarde para un primer compromiso de rama maestra pura. Entonces, necesitaba una lista de lo que cambié desde que instalé el programa agregando
> changed.log
a cualquiera de los siguientes:Potencia Shell
Golpetazo
Ahora, tengo mi lista de lo que cambié en los últimos diez días (no entremos en las mejores prácticas aquí aparte de decir, sí, me hice esto a mí mismo).
Para un nuevo comienzo, ahora:
Tuve que comparar mi lista cambiada con mi creciente .gitignore, corriendo
git status
medida que la mejoraba, pero mis ediciones en .gitignore se leen a medida que avanzo.¡Finalmente, tengo la lista de cambios deseados! En mi caso, es repetitivo: algunos temas funcionan junto con las configuraciones de servidor xml específicas para ejecutar un sistema de desarrollo contra este software que quiero poner en un repositorio para que otros desarrolladores obtengan y contribuyan ... Esta será nuestra rama maestra, así que comprometiéndose, empujando y, finalmente, RAMIFICANDO para un nuevo trabajo!
fuente
Simplemente elimine la carpeta o el archivo, que se confirmó previamente en Git, mediante el siguiente comando. Entonces el archivo gitignore reflejará los archivos correctos.
fuente
Una cosa difícil que no está cubierta por las otras respuestas aquí es que el archivo .gitignore no funcionará si tiene comentarios en línea, como este:
Entonces, si tiene comentarios como ese, cámbielos así:
fuente
También es posible que haya editado el
.gitignore
archivo con unsudo
comando. Encontré el mismo problema y al ejecutar los comandos:git status
aún podía ver los archivos "deberían ignorarse".Al editar con en
nano .gitignore
lugar desudo nano .gitignore
, pude ver el reflejo correcto.fuente
He creado .gitignore usando
echo "..." > .gitignore
PowerShell en Windows, porque no me permite crearlo en el Explorador de Windows.El problema en mi caso fue la codificación del archivo creado, y el problema se resolvió después de que lo cambié a ANSI.
fuente
Yo también tengo el mismo problema en Ubuntu, lo creé
.gitignore
desde el terminal y me funcionatouch .gitignore
fuente
El mío no funcionaba porque literalmente creé un documento de texto llamado .gitignore
En su lugar, cree un documento de texto, ábralo en Notepad ++ y guárdelo como .gitignore
Asegúrese de elegir Todos los tipos (*. *) Del menú desplegable cuando lo guarde.
O en gitbash, simplemente use
touch .gitignore
fuente
Si es usuario de Notepad ++ , intente hacer lo siguiente:
Abra su archivo .gitignore usando Notepad ++ y haga:
Menú Editar → Conversión EOL → Formato de Windows → Guardar .
Intente usar
git status
nuevamente y vea si funciona para usted.He publicado la respuesta a una pregunta similar aquí .
fuente
Para mí fue otro problema más. Mi archivo .gitignore está configurado para ignorar todo, excepto las cosas que le digo que no ignore. Como tal:
Ahora esto obviamente significa que también le estoy diciendo a Git que ignore el archivo .gitignore en sí. Lo cual no fue un problema, siempre y cuando no estuviera rastreando el archivo .gitignore. Pero en algún momento cometí el archivo .gitignore en sí. Esto llevó a que el archivo .gitignore se ignorara correctamente.
Entonces, agregar una línea más lo arregló:
fuente
Mi problema fue que escribí los archivos para ignorarlos con comillas "" y no con la barra diagonal.
Esto no funcionó y fue ignorado por git:
Esto funcionó bien:
También verifiqué mi codificación de archivos en Windows con Notepad ++. La codificación se estableció en UTF-8.
fuente