¿Cómo mantener, pero no rastrear un file en GitHub?

Tengo una secuencia de commands de initialization compartida con contenido específico para el usuario que quiero compartir con mi equipo como plantilla, pero no para que todos sigan actualizando con sus propias direcciones de correo electrónico.

echo "myname" > testfile git add testfile git commit -m "Add a user-specific file" git push push origin master echo "testfile" >> .gitignore git add .gitignore git commit -m "Ignore user-specific file" git rm --cached testfile # Showing that testfile is staged as deleted! 

Tuve un problema bastante similar en el que tengo algunos scripts de shell de "compilation fácil" que quiero proporcionar en el tree, y espero que las personas cambien, pero no quiero que confirmen los cambios cuando funcionen.

La forma en que resolví esto en mi proyecto es usar git update-index --assume-unchanged para proteger los scripts de compilation (cuando corresponda).

git_assume_build_scripts_unchanged.sh dos scripts bash, git_assume_build_scripts_unchanged.sh y git_undo_assume_build_scripts_unchanged.sh en la raíz del repository, se ven así:

git_assume_build_scripts_unchanged.sh

 #!/bin/bash set -e # Cause git to assume that all build scripts are unchanged, so that you can use "git add ." syntax to commit # without committing local changes to the build scripts git update-index --assume-unchanged *build*.sh git update-index --assume-unchanged Toolchain-*.cmake git update-index --assume-unchanged set_*_env_vars.sh 

git_undo_assume_build_scripts_unchanged.sh

 #!/bin/bash set -e # Cause git to assume that all build scripts are unchanged, so that you can use "git add ." syntax to commit # without committing local changes to the build scripts git update-index --no-assume-unchanged *build*.sh git update-index --no-assume-unchanged Toolchain-*.cmake git update-index --no-assume-unchanged set_*_env_vars.sh 

La idea es que si alguien necesita modificar el script de construcción para su máquina local, o modificar los files de cmake Toolchain, o similar, ejecuta el primer script. git update-index --assume-unchanged hace que git marque los files, de modo que si se cambian en el índice, incluso si son rastreados, esos cambios no serán detectados por git y no se escenificarán cuando use git add . o similar.

Si alguien necesita deshacer el cambio, puede usar el script de undo .

lo que probablemente estés buscando es esto:

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

Y luego, cuando quieres lo opuesto a eso, puedes hacer:

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

Esto mantendrá los files en el repository con la última versión antes de que usted asum, sin cambios, el file.

Espero que ayude,

Aclamaciones