Hoy vamos a hablar de GIT, un sistema de control de versiones distribuido y opensource que nos permitirá tener todo lo que programemos de una manera ordenada y sobre todo que podamos añadir modificaciones y mejora de manera incremental.
Con esto conseguiremos tener nuestro código de programación organizado, sabiendo los cambios que hemos hecho y por lo tanto poder volver atrás y lo que me parece más importante, olvidarnos de tener decenas de ficheros en nuestro ordenador con numeritos para ir definiendo los cambios que vamos haciendo.
GIT tiene una finalidad parecida a SVN o Mercurial, pero que se ha puesto muy de moda gracias a GitHub y su facilidad de uso, y que tiene una empresa detrás que lo soporta.
Github también ha permitido utilizar GIT para tener nuestras páginas en Html disponibles y accesibles para todo el mundo por lo que esto también ha hecho ganar adeptos a la causa.
¿Es para ti GIT?
Pues aunque no programes como si fueras a mandar un satélite a marte, en muchas cosas mundanas te va facilitar mucho la vida, y gracias a GitHub podrás aprovecharte de tener tus apuntes en html disponibles en internet.
También podrás escribir textos y llevar un control de los cambios que has hecho, con lo que si a eso le sumamos que puedes escribir en Markdown o Latex se amplian mucho las posibilidades que te proporciona.
Así que supongo que si lees este blog, seguramente ya estarás haciendo pinitos con la consola y con Ubuntu, por lo que vas a sacarle partido a este artículo.
Configurando Git y github
Esta configuración es básica pero suficiente para trabajar con git en consola y tener nuestra cuenta de github asociada.
Lo primero que te recomiendo es que te crees una cuenta de Github, la utilizaremos en este artículo.
Recuerda cambiar TU NOMBRE y TU@EMAIL.com por tus propios datos que diste para registrar tu cuenta de github.
Con estos comandos configuras tu cuenta:
git config --global user.name "TU NOMBRE"
git config --global user.email "TU@EMAIL.com"
También configuraremos algunos colores para que sea más cómodo trabajar con github en la consola:
git config --global color.ui true
git config --global color.status auto
git config --global color.branch auto
git config --global color.diff auto
git config --global color.interactive auto
Con esto conseguimos que, si nuestro terminal lo permite, Git nos va a colorear ciertas cosas, con lo que será más fácil leer la información que nos proporcione.
Creación de nuestro primer repositorio en GitHub
Aunque yo recomiendo trabajar con la consola por facilidad y efectividad en tus tareas, vamos que se adelanta un montón, si no quieres puedes utilizar entornos gráficos para gestionar GIT.
Para instalar GIT, simplemente ejecutamos el siguiente comando: sudo apt install git
Una vez tenemos instalado GIT, solo necesitamos tener un servidor con un repositorio para tener nuestros archivos, en este caso voy a utilizar GitHub, aunque si quieres puedes utilizar otro o instalar el tuyo propio.
Github te permite de forma gratuita tener tus propios proyectos de forma pública, con lo que cualquiera puede ver el código para descargarlo hacer un fork, o lo que sea.
Así que una vez tienes una cuenta, solo necesitas crear un repositorio nuevo.

Una vez que rellenemos los datos del repositorio lo tendremos listo para poder trabajar con el. Con un nombre, la licencia del proyecto y una descripción para que nos puedan encontrar en el caso de que nos interese que vean lo que hacemos, será suficiente.

Con esto ya tendríamos preparado el repositorio para usarlo, pero antes de probar los comandos de uso, te voy a explicar algunos conceptos del estado de los archivos antes de subirlos a github.
Estado de los archivos
Un archivo puede estar en varios estados:
- Descontrolado. Se trata de un archivo que está en el directorio donde estás haciendo tu control de versiones, pero que no está sometido al Git.
- Controlado. En este caso el archivo si que está supervisado por Git. Dentro de este estado, nos podemos encontrar tres posibilides:
- Modificado. Aquí, hemos realizado cambios sobre el archivo, sin embargo, estos cambios no están registrados. Puedes volver a modificarlos y cambiarlos, sin embargo, todos estos cambios se perderán.
- Archivado temporal. En este caso, los cambios se registran, y es posible volver a un estado anterior de los cambios realizados. Este archivado es de solo local, es decir, estos cambios no se subirán al repositorio central.
- Archivado confirmado. Este es un paso mas del anterior. Los cambios incluidos se subirán al repositorio central.
- Actualizado. En este caso el archivo no ha sufrido ningún tipo de modificación.
Así que para subir un archivo a nuestro repositorio Prueba el proceso a seguir es:
- modificarlo.
- archivarlo de forma temporal
- confirmar los cambios
- Por último lo podemos subir.
Aunque te parezca muy farragoso, tiene su sentido ya que al programar no siempre vas a subir lo último que hayas escrito.
Para nuestro repositorio Prueba vamos a crear el directorio de trabajo en nuestro ordenador local y los archivos necesarios:
mkdir Prueba
cd Prueba
git init
echo "Este proyecto va ser un Kacharreo" > README
Con el comando anterior de git
hemos creado el directorio de trabajo en nuestro ordenador local, inicializando los ficheros necesarios para que GIT funcione y también hemos creado un fichero README con una explicación del proyecto para que el repositorio tenga algo dentro.
Los comandos para subir un archivo al repositorio Prueba serían:
- Tanto para pasar de descontrolado a controlado, como para pasar de modificado a archivado temporal utilizaremos
git add archivo.txt
. - Para confirmar los cambios
git commit -m "confirmados los cambios"
. - Para subir los cambios al repositorio central
git push -u origin master
.
Una vez que sabemos los comandos, vamos a hacer nuestro primer commit
del archivo README. Cada commit
que hagamos, es una copia que estamos mandando al repositorio de los cambios realizados, y en cualquier momento podemos volver a una de estas copias, además de ver los cambios de nuestro proyecto.
git add README
git commit -m 'Primer commit de mi gran proyecto'
Solo nos queda decirle a nuestra copia local, cual es el lugar donde debe alojarse, o dicho de otra forma, que repositorio remoto van a estar alojados los archivos y donde se guardarán los cambios, en nuestro caso será Github.
El comando push
realiza todos estos cambios enviándolos al servidor, y solo tenemos que indicarle el repositorio donde se va a alojar (luego no será necesario indicarle esto):
git remote add origin git@github.com:tuusuario/Prueba.git
git push origin master
Si esto nos da el siguiente error:
git@github.com: Permission denied (publickey).
fatal: No se pudo leer del repositorio remoto.
Por favor asegúrese que tiene los permisos de acceso correctos
y que el repositorio existe.
Lo que ocurre es que no hemos añadido una clave pública nuestra a github, por lo que el proceso es el siguiente:
sudo apt-get install xclip
ssh-keygen -t rsa -b 4096 -C "TU_EMAIL@EMAIL.com"
#Te pedirá clave y la dejamos en blanco
ssh-add ~/.ssh/id_rsa
xclip -o -sel clip < ~/.ssh/id_rsa.pub
xclip -selection clipboard < ~/.ssh/id_rsa.pub
ssh -vT git@github.com
Una vez generada la clave SSH solo me queda añadirla a mi cuenta de Github. Simplemente copio y pego la salida del comando en este enlace: cat ~/.ssh/id_rsa.pub
Una vez he hecho esto, puedo comprobar si funcionó con este comando: ssh -T git@github.com
El mensaje que recibí y te aparecerá a ti también: Hi excid3! You've successfully authenticated, but GitHub does not provide shell access.
Explicado de manera sencilla en github que yo me suelo liarme mucho, cómo generar una clave ssh y añadir una nueva clave ssh a github
Ahora ya podríamos hacer git push origin master
, y tendríamos nuestro proyecto iniciado y disponible en Github.
Otros comandos que son interesantes de Git:
- Si quieres actualizar tu archivos locales con el repositorio central, tan solo tienes que ejecutar
git pull
. Ahora vamos a realizar los pasos inversos: - Para pasar un fichero que esté archivado temporalmente, tenemos que ejecutar
git reset archivo.txt
. - Si lo que queremos es pasar de un archivo del estado confirmado al estado temporal ejecutaremos
git reset HEAD~
Por último es interesante tener en mente la orden git status
, que nos permite conocer en cualquier momento el estado de nuestro repositorio.
Con todo lo visto, vamos a cambiar algunos ficheros, y volver a hacer commit
y push
. Como tenemos ya listo nuestro repositorio local, ya no es necesario indicar el alias con el que llamamos al proyecto ya que queda almacenado en la copia local.
touch index.php
echo "<?php phpinfo(); ?>" > index.php
git status -s
?? index.php
git add index.php
git commit -m 'Añadido el fichero inicial de la aplicación'
git push
Ya tenemos añadido un nuevo fichero en nuestro repositorio, y como hemos visto al crear y editar el fichero, hacemos git status -s
para comprobar los ficheros que hemos cambiado, y nos aparece un nuevo fichero que no reconoce junto con los interrogantes que nos indican que git ha encontrado el fichero pero no lo tiene incluido aún en su sistema.
Conclusiones
Me he dejado atrás el tema de ramas, que básicamente es que puedes implementar una idea sin que esté añadida a la rama principal, y dejarla como rama aparte o mezclarla en el futuro si quieres.
Para empezar con esto creo que es suficiente, pero que sepas que exista.
Te dejo una imagen que explica el proceso de funcionamiento de git:

Empezar con Git parece más complicado de lo que parece, pero te trae ventajas para tener copias de archivos y aquello que se te ocurra.
Cualquier tecnología al principio cuesta utilizarla, y esta en concreto, git es mucho más que un repositiorio para programación.
Recuerda que si te ha gustado lo que has leído puedes apoyar este proyecto a través de tus compras en Amazon, si, si, has leído bien, apoyar el proyecto. Con las compras que hagas de amazon me estarás ayudando a seguir haciendo este tipo de artículos.
Solo tienes que ir aquí y pegar la URL del producto de amazon que quieres comprar.
Tan simple como eso.
Y tan fácil.
Se feliz, y disfruta este día como si fuera una gran aventura.
Deja una respuesta