Desestabilizar un file en commits anteriores en git

Usamos git junto con nuestra aplicación para iOS, y ahora estamos planeando hacer que el código de la aplicación sea de código abierto. El problema es que no queremos que las personas tengan acceso a nuestras keys de API porque la API en sí no debería ser accesible para el público.

Las keys API están todas en APIConstants.h .m . Estoy pensando en desglosarlos en compromisos futuros, pero entiendo que las personas aún pueden verificar compromisos anteriores. ¿Hay alguna manera de desactivar el chequeo de esos dos files incluso desde confirmaciones más antiguas?

La otra solución en la que puedo pensar es eliminar por completo la carpeta .git , agregar APIConstants al .gitignore y volver a hacer git init a expensas de eliminar todo nuestro historial de .gitignore .

Hazlo asi:

 $ git rm --cached APIConstants.h $ echo APIConstants.h >> .gitignore $ git add .gitignore $ git commit -m "Remove and ignore APIConstants.h" 

Creo que puede lograr esto ejecutando el siguiente command: git rm –cached file

y luego agregue el file a su file .gitignore para que no se agregue más tarde.

agregar el file a .gitignore garantizará que el file no se includeá en las futuras confirmaciones.

Sin embargo, como dijiste, ya está disponible y los usuarios aún pueden download el file anterior. Podrías eliminarlos del repository por completo …

 git rm --cached <file> 

O bien, si quiere decirle al repository que deje de rastrear un file, podría usar …

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

y esto puede revertirse usando,

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