Agregué la siguiente línea a .gitignore
:
sites/default/settings.php
pero cuando escribo git status
, muestra el archivo como un archivo sin clasificar.
¿Cuál es el problema? Todos los demás patrones funcionan bien.
Agregué la siguiente línea a .gitignore
:
sites/default/settings.php
pero cuando escribo git status
, muestra el archivo como un archivo sin clasificar.
¿Cuál es el problema? Todos los demás patrones funcionan bien.
Respuestas:
Asegúrese de que .gitignore
está en la raíz del directorio de trabajo, y en ese directorio ejecute git status
y copie la ruta al archivo desde la salida de estado y péguelo en el .gitignore
.
Si eso no funciona, es probable que Git ya haya rastreado su archivo. Puede confirmar esto a través de la salida de git status
. Si el archivo no figura en la sección "Archivos no rastreados", Git ya lo ha rastreado e ignorará la regla del .gitignore
archivo.
La razón para ignorar los archivos en Git es para que no se agreguen al repositorio. Si previamente agregó un archivo que desea ignorar, Git lo rastreará y se omitirán las reglas de ignorar que coincidan. Git hace esto ya que el archivo ya es parte del repositorio.
Para ignorar realmente el archivo, debe destrabarlo y eliminarlo del repositorio. Puedes hacerlo usando git rm --cached sites/default/settings.php
. Esto elimina el archivo del repositorio sin eliminarlo físicamente (eso es lo que --cached
hace). Después de confirmar ese cambio, el archivo se eliminará del repositorio e ignorarlo debería funcionar correctamente.
.git
se encuentra el directorio y que es la raíz del repositorio. Como cuando clonas un repositorio, /xy/
entonces /xy/
es tu directorio de trabajo con /xy/.git/
inside.
git add .
after git rm --cached
para reconstruir correctamente el índice.
Me encuentro con esto, es una vieja pregunta, pero quiero que ese archivo sea rastreado pero no rastrearlo en ciertas copias de trabajo, para hacerlo puedes ejecutar
git update-index --assume-unchanged sites/default/settings.php
.gitignore solo ignorará los archivos que aún no haya agregado a su repositorio.
Si hiciste un git add .
, y el archivo se agregó al índice, .gitignore no te ayudará. Tendrá que hacer git rm sites/default/settings.php
para eliminarlo, y luego será ignorado.
git rm
debería hacerlo, pero es posible que le pida que use la opción -f que lo eliminaría del directorio de trabajo. No he descubierto esto más que hacer una copia del archivo, hacer git rm -f
y luego restaurar la copia.
Por favor use este comando
git rm -rf --cached .
git add .
A veces, los archivos .gitignore no funcionan aunque sean correctos. La razón por la que Git ignora los archivos es que no se agregan al repositorio. Si agregó un archivo que desea ignorar antes, Git lo rastreará y se omitirá cualquier regla de omisión. Git hace esto porque el archivo ya es parte del repositorio.
Yo tuve el mismo problema. Los archivos definidos en .gitingore
donde se enumeran como archivos sin seguimiento cuando se ejecutan git status
.
La razón fue que el .gitignore
archivo se guardó en UTF-16LE
codificación y no en UTF8
codificación.
Después de cambiar la codificación del .gitignore
archivo UTF8
, funcionó para mí.
Lo que hice para ignorar el archivo settings.php con éxito:
Creo que si hay un archivo comprometido en Git, ignorar no funciona como se esperaba. Simplemente elimine el archivo y confirme. Luego lo ignorará.
Hay instancias, por ejemplo, archivos de configuración de aplicaciones, que quiero rastrear en git (por lo que .gitignore no funcionará), pero que necesito cambiar para la configuración local. No quiero que git administre estos archivos o los muestre como modificados. Para hacer esto uso skip-worktree:
git update-index --skip-worktree path/to/file
Puede confirmar que los archivos se omiten enumerando archivos y buscando líneas que comiencen con S para omitidos
git ls-files -v | grep ^S
Si en el futuro desea que git administre el archivo localmente nuevamente, simplemente ejecute:
git update-index --no-skip-worktree path/to/file
Mescalito arriba tuvo una gran respuesta, eso me llevó por el camino correcto pero
git update-index: archivo sin suponer / a / ignore.php
Tiene un contrato con git en el que: el usuario promete no cambiar el archivo y le permite a Git suponer que el archivo del árbol de trabajo coincide con lo que está registrado en el índice.
Sin embargo, cambio el contenido de los archivos, así que en mi caso --skip-worktree es la mejor opción.
El sitio web de Toshiharu Nishina proporcionó una excelente explicación de skip-worktree vs asumir-sin cambios: Ignorar archivos ya administrados con Git localmente
Otra posible razón : algunas instancias de clientes git ejecutándose al mismo tiempo . Por ejemplo "git shell" + "GitHub Desktop", etc.
Esto me sucedió, estaba usando "GitHub Desktop" como el cliente principal y estaba ignorando 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. VS Code tiene control git incorporado, y esto genera algunos conflictos.
Solución : vuelva a verificar múltiples clientes git ocultos y use solo un cliente git a la vez, especialmente al borrar la memoria caché git.
¡Asegúrate de que el .gitignore no tenga una extensión! No puede ser .gitignore.txt, en Windows simplemente nombra el archivo .gitignore. y funcionará
Acabo de probar esto con git 1.7.3.1, y me dio una estructura como:
repo/.git/
repo/.gitignore
repo/sites/default/settings.php
donde repo
está la "raíz" mencionada anteriormente (yo la llamaría la raíz de su árbol de trabajo), y .gitignore
solo contiene sites/default/settings.php
, ignorar funciona para mí (y no importa si .gitignore
se agrega al repositorio o no). ¿Esto coincide con su diseño de repositorio? Si no, ¿qué difiere?
Por si alguien en el futuro tiene el mismo problema que yo:
Si usas el
*
!/**/
!*.*
truco para eliminar archivos binarios sin extensión, asegúrese de que TODAS las demás líneas de gitignore estén ABAJO. Git leerá desde .gitignore desde la parte superior, por lo que a pesar de que tenía 'test.go' en mi gitignore, fue el primero en el archivo y se convirtió en 'no ignorado' después
!*.*
Intenté la mayoría de los comandos anteriores en el terminal VS Code y obtuve errores como:
fatal: pathspec '[dir]/[file]' did not match any files
Abrí el proyecto en GitHub Desktop e ignoré desde allí y funcionó.