Tengo un directorio tmp en mi repositorio de git que me gustaría que aún existiera, pero que se ignore. Lo agregué a .gitignore
, pero git status
todavía me informa sobre los cambios en los archivos en ese directorio. Lo intenté git rm -r --cached
, pero eso lo elimina del repositorio remoto. ¿Cómo puedo dejar de rastrear cambios en este directorio, pero aún permitir que exista? También necesito hacer esto para 1 archivo, pero los cambios también aparecen git status
después .gitignore
de ellos. ¿Qué tengo que hacer?
git
version-control
21312312
fuente
fuente
Respuestas:
En lugar de hacerlo
.gitignore
, puede actualizar el repositorio local de git ejecutando el siguiente comando:En este caso, se está rastreando un archivo en el repositorio de origen. Puede modificarlo en su repositorio local y git nunca lo marcará como cambiado. Lee mas en:
fuente
git update-index --no-assume-unchanged <file>
. Si desea enumerarlosgit ls-files -v | grep '^h'
.Ignorar los cambios realizados en los archivos y permitir que existan es el propósito exacto de
.gitignore
. Entonces, agregar los archivos (o directorios).gitignore
es lo único que tiene que hacer.Pero su problema es que git ya está rastreando los archivos que desea ignorar y
.gitignore
no se aplica a los archivos rastreados. La única forma de detener este seguimiento es decirle a git que los elimine. Al usargit rm --cached
, evita que git elimine sus archivos locales, pero cualquier otro repositorio que obtenga sus cambios aplicará la eliminación. No creo que haya una manera de evitar eso desde su propio repositorio. Debe hacer algo en los otros repositorios o aceptar que los archivos se eliminarán.Para evitar la eliminación de los demás repositorios, puede:
git rm --cached
los archivos y confirmar antes de realizar los cambios. Git fusionará muy bien las dos eliminaciones sin tocar los archivos ya sin seguimiento.fuente
git update-index --assume-unchanged <file>
. Echa un vistazo a: blog.pagebakers.nl/2009/01/29/…git rm --cached <filename> -r
y después de este push cambia al repositorie nuevamente para que se elimine el archivoPonga
/
al final del nombre del directorio en su.gitignore
archivo, es decirSi ha rastreado archivos dentro de ese directorio, primero debe decirle a git que se olvide de ellos (antes de agregar el directorio a la lista de ignorados). Suponiendo que no tiene nada vital allí (es decir, que puede rayarlo):
No se rastrearán los archivos nuevos en ese directorio.
La
--cached
opción degit rm
solo funciona en el índice (cambios pendientes más o menos). No tiene ningún efecto sobre el árbol de trabajo o el estado de lo que se ha rastreado o no.fuente
the/dir/
ythe/dir/*
.gitignore no tiene ningún efecto en los archivos rastreados.
Lo que desea es establecer el bit de asumir sin cambios en los archivos en el directorio tmp /. Hay una buena explicación de cómo hacer eso aquí: Git: destrabar un archivo solo en el repositorio local y mantenerlo en el repositorio remoto
Además, frases breves para establecer asumir-sin cambios en todos los archivos de un directorio - git update-index --assume-sin cambios en el directorio .
fuente
Parece que está intentando rastrear un archivo (por ejemplo
index.php
), agregarlo a un repositorio remoto, luego dejar de ver el seguimiento, mientras mantiene el archivo en el control remoto (es decir, mantenerloindex.php
sin cambios en el repositorio remoto mientras lo cambia localmente).Por lo que tengo entendido, git no puede hacer esto. Puede rastrear un archivo o no. Si realiza un seguimiento de un archivo, existe en el repositorio remoto y cambia cuando realiza cambios en él. Si no rastrea un archivo, no existe en el repositorio remoto.
Debido a que no es posible hacer exactamente lo que desea con git, existen potencialmente otras soluciones, dependiendo de su situación exacta. Por ejemplo, ¿por qué no desea
index.php
cambiar en remoto cuando lo cambia localmente? ¿Hay configuraciones específicas del usuario en el archivo? Si este es el caso, puede hacer:Ahora edite index_template.php para que sea como desea que aparezca en el repositorio remoto. Agregue algo a su README para decirle a las personas que usan su repositorio que una vez que lo clonen, deben copiar index_template.php a index.php y editarlo para que se adapte a sus necesidades.
Cuando alguien clona su repositorio, debe crear el suyo propio
index.php
. Usted ha hecho que sea fácil para ellos: simplemente copiarindex_template.php
aindex.php
y revisarlo con los ajustes específicos de la computadora.fuente