2010-06-03 13 views
27

Mi .gitignore se ignora el archivo y los archivos que se deben ignorar siguen visibles..gitignore no ignora los archivos

[email protected] ~/workdir % git status 
# On branch master 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
#  modified: .htaccess 
#  modified: application/controllers/statistics.php 
# 
no changes added to commit (use "git add" and/or "git commit -a") 
[email protected] ~/workdir % cat .gitignore 
.htaccess 
application/config/config.php 
application/config/database.php 
[email protected] ~/workdir % 

Los archivos están en control de versión, pero con cambios razonables no quiero presionar. git rm ... no es una opción porque los archivos deben estar en control de versión (con otras configuraciones en los archivos). Simplemente no quiero presionar mis cambios en estos archivos.

+0

tal vez este post puede ayudar a http://stackoverflow.com/questions/1139762/gitignore-file-not-ignoring probarlo! –

Respuesta

7

Ignorar archivos en git no significa que no va a pulsar ellos. Significa que no versión control ellos. Si no quiere presionar, le sugiero que cree una sucursal local que contendrá cosas para la máquina local y luego fusionará los cambios necesarios en una sucursal que usted enviará a remoto.

Creo que ya ha add ed sus archivos y ahora estamos tratando de ignorarlos.

+2

Otra forma que uso ahora es esconder los cambios locales y guardar el escondite después de la fusión/rebase. – Fu86

+0

Tenía este archivo en mi lista de ignorados y de alguna manera "agregué" -ed también. Buena llamada @Naufal –

+1

Realmente no respondí la pregunta, pero la respuesta de @ anybug sí. – MikeSchinkel

2

Esta me molestó durante días. El archivo .htaccess ya está bajo control de versión y ha sido modificado.

4

Parece que el archivo .htaccess ya se ha agregado al control de la versión. Primero debe eliminarlo antes de poder ignorarlo. Esto se puede hacer usando git rm

+0

Lo sé, pero no quiero eliminar el archivo. Solo quiero ignorar los cambios – Fu86

+0

Si hay una versión de .htaccess en el control de versiones, pero simplemente no desea confirmar ningún cambio, .gitignore no funcionará. No hay opción para esto hasta donde yo sé. Simplemente no agregue ese archivo a una confirmación. – Marc

+4

puede usar git rm --cached que dejará el archivo en el directorio de pie pero lo eliminará del índice –

13

ya que desea:

  • mantener .htaccess en el repositorio Git (sin git rm)
  • tienen datos sensibles locales en ella

utilizar un filter driver que permitan:

  • d urante la fase de salida, completan la .htaccess con los datos privados
  • durante la fase de confirmación limpiar el .htaccess de todos los datos sensibles

content filter driver

que pueda entonces la versión de un archivo cifrado que su script mancha hará lo siguiente:

  • ser el único para descifrar
  • uso con el fin de completar el clásico (y empujado/tirado) .htaccess archivo.

Puede versionar los datos sensibles encriptados en una rama especial que no va a presionar.
Incluso si presionó ese archivo de alguna manera, el daño sería limitado, ya que solo su estación de trabajo tiene la clave privada necesaria para descifrar dicho archivo.

+0

+1 para la imagen bonita y el controlador del filtro. Me preguntaba cuándo lanzarías en este ser una pregunta de control de versiones y todo. :) –

+0

+1 para la automatización. Iba a sugerir 'git update-index --assume-unchanged', que aún puede funcionar como una solución simple, pero este tipo de automatización es fantástica. –

+0

+1 por el simple hecho de que alguien sabe cómo manejar todas estas cosas arcanas. Esto no era lo que estaba buscando, ¡pero aún así! – PapaFreud

45

tuve el mismo problema: quería un archivo .htaccess diferente por repositorio, entonces no pude porque el archivo htaccess ya se había agregado al repositorio. Está funcionando ahora, puedo cambiar cualquiera de los archivos .htaccess de cualquier versión sin que git los presione.Marc tiene razón cuando dice "Primero hay que eliminarlo, antes de que se pueda ignorar. Esto se puede hacer usando git rm".

procedí en este orden:

  • copia de seguridad de su archivo .htaccess en algún lugar
  • eliminar el archivo .htaccess usando git rm .htaccess
  • cometer este cambio (supresión .htaccess)
  • empuje que (git push)

Esto obviamente eliminará su archivo .htaccess

  • continuación, editar y añadir .gitignore /.htaccess
  • commit luego empuje que
  • recrear su archivo .htaccess mediante la restauración de la copia de seguridad anterior

luego que haya terminado: los cambios que realice en .htaccess ya no será empujado. La parte difícil es el orden siguientes pasos ...

esperanza que esto está claro

+3

+1 para viñetas paso a paso y explicación súper clara –

+0

¡La barra diagonal! Me estaba volviendo loco, solo tenía '.htaccess' en mi archivo de gitignore – lxm7

30

después anybug's steps noted here mi git todavía mantienen un registro de .htaccess y esto ayudó:

git update-index --assume-unchanged .htaccess 

Para volver:

git update-index --no-assume-unchanged .htaccess 
+0

que era perfecto, ¡gracias! – Kristian

+0

La mejor solución para mí –

+2

Puede revertir ese efecto por 'git update-index --no-assume-unchanged' – rahmanisback

8

Supongamos que a continuación se muestra el contenido del archivo .gitignore. Aquí, .htaccess se encuentra en el directorio raíz del proyecto.

/.htaccess 
application/config/config.php 
application/config/database.php 

Vamos a ejecutar el comando siguiente para ignorar los archivos .htaccess, config.php y database.php.

[email protected]:work-dir$ git update-index --assume-unchanged .htaccess 
[email protected]:work-dir$ git update-index --assume-unchanged application/config/config.php 
[email protected]:work-dir$ git update-index --assume-unchanged application/config/database.php 

Si desea iniciar el seguimiento de nuevo:

[email protected]:work-dir$ git update-index --no-assume-unchanged path/to/file 

por ejemplo,

[email protected]:work-dir$ git update-index --no-assume-unchanged .htaccess 
+0

Esto funcionó para mí. Mi código está dentro del directorio '/ code /' del proyecto. '$ git update-index --assume-unchanged code/.htaccess'. Y SourceTree no lo rastrea más. –

+0

esto es lo único que funcionó para mí. me estaba volviendo loco, gracias – jamescampbell

3

Hago esto todo el tiempo. Comienzo con los archivos de configuración en mi repositorio y luego decido que no los quiero allí.

Se puede quitar algo de tu repositorio utilizando

git rm --cached <<filename>> 
Cuestiones relacionadas