Quiero mostrar algunos de mis trabajos cargándolos en mi cuenta de GitHub. Sin embargo, hay algunos archivos que contienen contraseñas, como conexiones de bases de datos.
¿Hay alguna manera de marcar un archivo como no compatible con Git para que no pueda aparecer en GitHub?
.gitignore
. AFAIK no hay una forma 100% completa de decirgit
que evite cometer un archivo específico en todos los casos. Aunque esto puede verse como una característica ... que permite que los comandos explícitos anulen las configuraciones genéricas.Respuestas:
Primero, no hay forma de tener algunos archivos y confirmaciones visibles en su repositorio local de Git pero de alguna manera no visibles en GitHub; Si tiene un archivo confirmado en Git, aparecerá en GitHub.
En segundo lugar, no existe una forma simple y práctica de marcar un archivo individual como "no transmisible". Pero definitivamente hay una forma de ignorar un archivo en un repositorio de Git: agregando los archivos, incluida su ruta relativa si necesario — a un
.gitignore
archivo :Crear un básico
.gitignore
es bastante fácil ya que es solo un archivo de texto sin formato. Entonces, por ejemplo, si tuviera unconfig.php
archivo en su raíz, haría esto; suponiendo que está utilizando PHP, pero el concepto se aplica a cualquier configuración. También estoy usando Nano como mi editor de texto en este ejemplo, pero siéntase libre de usar el editor de texto que normalmente usa para esto:Y simplemente agregue ese nombre de archivo a ese archivo:
Guárdelo y ahora Git simplemente ignorará ese archivo.
Dicho esto, lo que me gusta hacer para configuraciones como esta es mantener una configuración de muestra / ejemplo neutralizada de detalles confidenciales en el repositorio, por lo que tengo alguna referencia sobre qué formato de archivo de configuración es un archivo llamado algo así:
De esa manera, usted sabe exactamente cómo se
config.php
debe configurar el archivoconfig.SAMPLE.php
y puede asegurarse de queconfig.php
Git nunca toque el archivo real .Además, si planea mostrar su código, debe esperar que alguien intente tomar ese código e implementarlo en su propio sistema de alguna manera. Recuerde, no somos usted y sin un archivo de configuración de muestra en su repositorio, la gente realmente no entenderá cómo implementar el código por su cuenta. Diablos, incluso podrían pensar que no eres competente porque no proporcionaste un ejemplo de configuración básica.
fuente
database_url = Environment.DATABASE_URL
y dejar un comentario arriba como# postgres://username:password@localhost/dbname
.También puede agregar un enlace previo a la confirmación para implementar comprobaciones de cordura. El directorio
.git/hooks
de cada repositorio git tiene algunos scripts de muestra.El script llamado
pre-commit
se ejecuta si existe antes de cada confirmación y un valor de retorno distinto de cero anula la confirmación.Por ejemplo, podría tener un script simple como este:
Y si eso
filename
coincide, la confirmación falla.fuente
.gitignore
es una práctica muy común, y comúnmente entendida, para cualquiera que use Git. Pero la mayoría de los usuarios de Git no utilizan realmente un script previo a la confirmación. Requiere cierto conocimiento de la configuración y requiere alguna razón verdadera por la cual un método como este sería preferible a simplemente usar un.gitignore
archivo. Pero esto es muy útil para algunos casos más complejos, pero definitivamente es un concepto que usaría cuando realmente sepa que necesita usarlo.Lo que dijo @JakeGould. En algunos casos, también puede utilizar bits de archivo especiales como
skip-worktree
oassume-unchanged
que se pueden configurar de la siguiente manera; para las diferencias entre los dos, vea esta respuesta de desbordamiento de pila :Lo que luego ocultará cambios adicionales a un archivo ya existente y que podría usar si realmente desea que un archivo esté allí después de cada extracción. Pero le aconsejaría que solo lo use si realmente sabe lo que está haciendo.
fuente
Usa un me
.gitignore
gusta @JakeGould dijo. Además, alguna información relacionada:.gitignore
evita que los archivos sean rastreados; si ya están rastreados, usegit rm --cached
para eliminarlos$GIT_DIR/info/exclude
también serán ignorados~/.gitconfig
también se ignoran.Consulte la documentación oficial de Git para más detalles.
fuente
Para ampliar las respuestas de Jake y 46: una muy buena práctica es tener una extensión consistente que use para los archivos en los que incluya información privada, y use
.gitignore
siempre para excluir archivos con esa extensión globalmente (usando el.gitconfig
archivo como se menciona en otro lugar para que siempre se ignore) para tu usuario).De esa manera, puede tener por ejemplo:
y si ha excluido
*.exc
globalmente, sabe que no se confirmará, incluso si olvida excluir individualmente ese archivo específico.fuente