¿Git 'skipworktree' impide que los files se actualicen desde git pulls?

Quiero que un file de configuration específico en mi proyecto tenga configuraciones diferentes en el entorno local que en el entorno de producción y no quiero cambiar ni save / esconder el file cada vez que envío algo al repository principal

Descubrí que usar:

git update-index --skip-worktree <file> 

me deja hacer exactamente eso.

Sin embargo, tengo una pregunta: ¿en un escenario en el que otra persona cambia el file de configuration y empuja los cambios al repository principal y la próxima vez que realizo los cambios, mi file de configuration local se actualizará?

Si el file de configuration es inútil para hacer control de versiones (ya que necesita configurarlo de manera diferente en local), será mejor que ignore el file en .gitignore :

 touch .gitignore echo <file> >> .gitignore git rm <file> --cached git add . git commit -m 'message' git push 

El motivo por el cual no se usa git update-index --skip-worktree <file> como se muestra a continuación:

  • El file de configuration no se cambia localmente, solo se actualiza en remoto, cuando se ejecuta git pull , el file de configuration se actualizará como remoto.
  • El file de configuration cambió tanto en local como en remoto, cuando ejecutas git pull , git detectará el conflicto y mostrará el error como:
 error: Your local changes to the following files would be overwritten by merge: file Please commit your changes or stash them before you merge. Aborting 
  • El file de configuration solo se modificó localmente, cuando quieras realizar el pago en otras sucursales, git mostrará
 error: Your local changes to the following files would be overwritten by checkout: file Please commit your changes or stash them before you switch branches. Aborting 
  • git update-index --skip-worktree es generalmente para uso temporal.

También puede comparar el uso de git update-index --skip-worktree aquí .

La documentation es un poco confusa aquí; en mis testings (usando la versión 2.12.0.windows.1) No puedo extraer si el control remoto contiene cambios en un file que he marcado con --skip-worktree . (Recibo el error habitual de las operaciones que sobrescribirían los cambios locales. Intenté varias forms de resolver esto, pero el único que funcionó fue eliminar el bit skip-worktree, lo que, por supuesto, lo pondría en el punto de partida para proteger el cambios locales)

Personalmente, creo que esta solución es bastante desorderada. Tal vez sea mejor organizar cosas para que (a) las configuraciones específicas del entorno no estén controladas por el origen (es decir, almacenadas en routes cubiertas por .gitignore o que estén fuera del repository), o (b) guardes versiones de los files para cada el entorno y los medios para seleccionar el "activo" no están controlados por la fuente.