Cómo usar git-crypt para encriptar parte de un repositorio Git

Contenido
¿Quieres guardar de manera más segura información dentro de tu repositorio git?
Te cuento el procedimiento que seguí con git-crypt
que puede ayudarte.
Referencias
- CIFRANDO ARCHIVOS EN GIT CON GIT-CRYPT
- How to Manage Your Secrets with git-crypt
- git-crypt for Windows
- Syncing your Obsidian vault to Android via an encrypted GitHub repository
Escenario
- Git instalado
Instalar git-crypt
Linux
- $ sud apt install git-crypt
Windows
- Colocar en el path el ejecutable que se puede descargar de git-crypt for Windows
Android
- Via termux
- $ pkg install git-crypt
Preparacion del repositorio
Git
- $ git init
- $ echo “# Readme” > readme.md
- $ git add .
- $ git commit -m “First commit”
- $ git push
Git Crypt
- $ git-crypt init
- $ git-crypt export-key ../git-crypt-key
- Este archivo
git-crypt-key
es la llave que hay que conservar y usar con cuidado
- Este archivo
- $ mkdir secret
- Esta será una carpeta para contenido secreto
- También podría haber sido un archivo
- Los patrones se indicaran en
.gitattributes
- $ vim
.gitattributes
secret/** filter=git-crypt diff=git-crypti
.gitattributes !filter !diff
- A partir de ahora, cada commit encriptará esos archivos
- $ git add .
- $ git commit -m “Add .gitattributtes”
- $ git push
Guardar contenido
- $ echo “This is a secret” > secret/readme.md
- $ git add .
- $ git commit -m “Add secret content”
- $ git push
- En el repositorio, el contenido dentro de secret aparecerá encriptado
- Cualquiera que descargue el repositorio, vera encriptado ese contenido
- Localmente, sin embargo, el contenido no está encriptado
- Pero modo fácil de comprobar la encriptación en local es usando
lock
- $ git-crypt lock
- $ cat secret/readme.md
- Esta vez se verá encriptado
- Pero modo fácil de comprobar la encriptación en local es usando
Desencriptar
- $ git-crypt unlock ../git-crypt-key
- Esto vuelve a mostrar sin encriptar el contenido local, que es la manera usual de trabajar
Flujo de trabajo
- Trabajar de modo que el contenido local no se muestre encriptado, usando
unlock
- Usar
lock
y ocultar la llave cuando se desee asegurar el contenido local
Util
- $ git-crypt status secret
- Muestra info acerca del estado de la carpeta
secret
- Muestra info acerca del estado de la carpeta
Espero te sirva de ayuda.
¿Has encontrado alguna mejor manera de hacerlo? Puedes compartirlo en los comentarios 🙏