usar rastreados para ignorar example crear como comando cambios archivo git version-control

rastreados - usando gitignore para ignorar(pero no eliminar) archivos



gitignore java (5)

Tengo un directorio tmp en mi informe de git que me gustaría seguir existiendo, pero me ignorarán. Lo agregué a .gitignore , pero el git status todavía me dice acerca de los cambios a los archivos en ese directorio. Intenté git rm -r --cached , pero eso lo quita del repositorio remoto. ¿Cómo puedo dejar de seguir los cambios en este directorio, pero todavía permitir que exista? También necesito hacer esto para 1 archivo, pero los cambios a eso también aparecen en el git status después de que los .gitignore . ¿Que debería hacer?



Coloque un / al final del nombre del directorio en su archivo .gitignore , es decir,

tmp/

Si ha rastreado archivos dentro de ese directorio, necesita decirle a git que se olvide de ellos primero (antes de agregar el directorio a la lista de ignorar). Asumiendo que no tienes nada vital allí (es decir, que puedes rascarlo):

git rm -rf ./tmp/ git commit -m "untrack tmp dir" mkdir tmp echo tmp/ >> .gitignore git add .gitignore ; git commit -m "add tmp/ to ignore list"

Los nuevos archivos en ese directorio no serán rastreados.

La opción --cached a git rm solo funciona en el índice (cambios pendientes más o menos). No tiene ningún efecto en el árbol de trabajo o el estado de lo que se ha rastreado o no.


En lugar de .gitignore , puede actualizar el repositorio local de git ejecutando el siguiente comando:

git update-index --assume-unchanged <file>

En este caso, se realiza un seguimiento de un archivo en el repositorio de origen. Puede modificarlo en su repositorio local y git nunca lo marcará como cambiado. Lee mas en:


Ignorar los cambios realizados en los archivos mientras permite que existan es el propósito exacto de .gitignore . Entonces, agregar los archivos (o directorios) a .gitignore es lo único que tienes 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 rastreo es decirle a git que los elimine. Al usar git rm --cached , git rm --cached que git elimine tus archivos locales, pero cualquier otro repositorio que obtenga los 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 serán eliminados.

Para evitar la eliminación en otro repositorio, puede:

  • (obviamente) haga una copia de seguridad de los archivos en algún lugar, extraiga los cambios y restaure los archivos,
  • o también git rm --cached los archivos y confirmar antes de tirar de los cambios. Git combinará muy bien las dos eliminaciones sin tocar los archivos que ya no se han rastreado.

Parece que estás intentando rastrear un archivo (por ejemplo, index.php ), agregarlo a un repositorio remoto, luego dejar de seguir su seguimiento, mientras mantienes el archivo en el control remoto (es decir, mantener index.php sin cambios en el repositorio remoto mientras se cambia localmente).

Por lo que entiendo, 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 se realizan cambios en él. Si no rastrea un archivo, no existe en el repositorio remoto.

Debido a que no es posible hacer exactamente lo que quiere con git, existen otras soluciones potencialmente, dependiendo de su situación exacta. Por ejemplo, ¿por qué no quieres que index.php cambie en remoto cuando lo cambias localmente? ¿Hay configuraciones específicas del usuario en el archivo? Si este es el caso, puede hacer:

cp index.php index_template.php git rm --cached index.php

Ahora edita index_template.php para que sea como quieras que aparezca en el repositorio remoto. Agregue algo a su archivo README para decirle a las personas que utilizan su repositorio que una vez que lo clonan, deben copiar index_template.php en index.php y editarlo para que se ajuste a sus necesidades.

git add index_template.php git add README git commit -m ''added template index.php file'' git push

Cuando alguien clona su repositorio, debe crear su propio index.php . Ha hecho que sea más fácil para ellos: simplemente copie index_template.php en index.php y index_template.php con configuraciones específicas de la computadora.