Notas sobre Git y Github

¿Qué es Git?

Git es un sistema de control de versiones distribuido (no existe un servidor central), fue creado por Linus Torvalds. Un sistema de control de versiones es útil para cosas como:

  • Crear un historial de las versiones de tu código, snapshots.
  • Revertir los cambios hechos en un proyecto.
  • Trabajar con muchos desarrolladores al mismo tiempo.

La colección de archivos y el historial completo son almacenados en un repositorio.

Clonar

El proceso de hacer una copia local de un repositorio externo es conocido como cloning.

Cambios en el repositorio

Un cambio se hace en dos pasos:

  • Staging: Se añade el archivo al index: git add 'algo'
  • Committing: Se almacenan los cambios en el repositorio: git commit 'algo'

Instalar Git

La instalación en sistemas Debian y derivados es sencilla: sudo aptitude install git. Lo que se instala con este comando es un cliente Git.

También existen buenos servidores Git como Gitolite.

Configurar Git

Ya con Git instalado vamos a configurar algunos datos:

git config --global user.name "John Winston Lennon"
git config --global user.email "j.w.lennon@gmail.com"

Estos datos son útiles si usamos servicios como Github o Bitbucket.

Manos a la obra con Github

Github es una plataforma Git en la nube. Generas una cuenta, creas llaves SSH o bien trabajas a través de HTTPS.

Lo que haremos ahora será clonar el repositorio del proyecto Class2Go, que es una plataforma MOOC de la Universidad de Stanford, (dado que este repo es bastante extenso, se puede elegir cualquier otro):

git clone git@github.com:omartrinidad/class2go.git
Clonando un repositorio
Clonando un repositorio

Después de eso vamos a la cuenta de Github que aloja el proyecto Class2Go y picamos en el botón Fork. En automático tendremos una copia de ese proyecto a nuestra disposición.

Fork
Fork

Entramos a la carpeta que se ha generado, modificamos el archivo README.md y ejecutamos los siguientes comandos:

git add README.md
git commit -m "Modificamos el archivo README"

En caso de que hayamos modificado más de un archivo también es posible utilizar wilcards:

git add *.py
git commit -m "Se han modificado todos los archivos Python"

Sin embargo los archivos que hemos modificado aún no están en el nuestro repositorio madre. Si es la primera vez que hacemos un cambio ejecutaremos:

git push -u origin master

El cambio se debe haber efectuado, lo que hemos hecho es un fork, o sea, a partir de un proyecto de código abierto podremos empezar a escribir el nuestro (similar a un sisma religioso según Wikipedia).

A partir de la segunda vez podemos usar una versión abreviada:

git push

¿Qué pasa si alguien más realizó un cambio en el archivo que pretendemos cambiar? Recibiremos un mensaje de error, para saltar ese error debemos ejecutar el comando:

git pull

Lo que este comando hace es jalar al repositorio local hasta el último cambio hecho en el repositorio mamá.

Crear un repositorio

Ahora vamos a crear un repositorio desde cero, se supone que estamos usando Github, picamos el botón indicado para crear un repositorio o vamos a la url https://github.com/new:

Crear un repositorio desde Github
Crear un repositorio desde Github
mkdir mirror
cd mirror
git init

El comando git init crea una carpeta llamada .git que es donde se guarda la magia detrás de Git.

git add .
git commit -m "Cambios en los archivos de este folder"
git remote add origin git@github.com:omartrinidad/mirror.git
git push -u origin master

El comando remote add origin añade un repositorio remoto, en este caso el que anteriormente creamos en Github: mirror.

Otros comandos útiles en Git

git log

Nos ayuda a ver el historial de commits con información como fecha, autor, comentario.

git status

Nos dice qué onda con los commits, si hay commits pendientes nos avisa, si no los hay pues también.

Referencias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s