¿Es posible ignorar un file una vez que ya ha sido rastreado en Git?

¿Es posible agregar un file de configuration ficticio una vez (para que otros desarrolladores puedan ver cómo debería verse el file de configuration) y luego ignorarlo utilizando el file .gitignore. Luego, reemplace los detalles de la configuration ficticia con los funcionales para que pueda continuar desarrollando el proyecto y seguir implementando cambios. Pero el file de configuration ficticio original permanecerá intacto en Github?

Este es el enfoque que intenté:

  • crear repository en Github
  • intitialise repo local
  • retirar el repository remoto
  • empujar el repository local a github con Configuration.java (que contiene detalles ficticios)
  • agregue Configuration.java al file .gitignore
  • empujar repo local a github
  • agregue los detalles correctos a Configuration.java
  • empujar repo local a github

Pero se realiza un seguimiento del cambio a configuration.java, por lo que esto no funciona.

Si solo te preocupa ignorar los cambios en tu repository de desarrollo local, puedes usar git update-index --assume-unchanged <file> para ignorar cualquier cambio en el file. Ver http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/ para más detalles.

Mencionas :

  1. empujar el repository local a github con Configuration.java (que contiene detalles ficticios)
  2. agregue Configuration.java al file .gitignore

El problema con esto es que gitignore solo funciona en files que aún no se están rastreando, y desde que se ha comprometido ya es demasiado tarde para que gitignore funcione. Para citar los documentos de gitignore :

Un file gitignore especifica intencionalmente files sin seguimiento que Git debe ignorar. Los files ya rastreados por Git no se ven afectados;

Si desea enviar su propio trabajo a un repository visible públicamente, pero desea ocultar información confidencial como cadenas de connection / passwords, etc., primero debe enviar un file ficticio. Por ejemplo, cometer algo como esto:

 public class Configuration { public static final String USERNAME = "someUsername"; public static final String PASSWORD = "passwordHere"; } 

Luego, dile a git que deje de rastrear los cambios en ese file, para que puedas modificar los valores localmente pero no se te solicite que confirme esos cambios.

 git update-index --assume-unchanged path/to/file.txt 

Un par de cosas para señalar:

  • Comtesting siempre en un file de configuration ficticio, no lo dejes por completo. Si lo haces, cuando la gente finalice la compra de tu proyecto y el file no se encuentre, ¡no podrán comstackr el proyecto! Ayúdelos dando algunos datos de muestra.
  • Como git ya no está rastreando ese file, si realizas cualquier modificación que quieras comprometer, tendrás que atenderlo manualmente (ya sea hacerlo a través de github.com o volver a activar el seguimiento, repararlo y luego inhabilitar el seguimiento). de nuevo). Para este propósito, mantenga ese file relativamente liviano, solo variables, no ponga lógica ahí que pueda necesitar para seguir actualizando.