Eleazan Source

18feb/112

Iniciarse en Git

Hoy, he decidido iniciarme en Git (más que nada, porque tengo mucho código en el trabajo, y me hacia ya falta un control de versiones), asique explicaré un poco cómo ha sido el contacto inicial.

Primero, y antes que nada, explicar que Git es un pequeño "sistema" para tener tu código / trabajo bien ordenado, saber cuando y qué cambios hiciste, e incluso permite colaborar entre varios. El sistema que utiliza, me gusta bastante. Primero, tenemos el entorno de trabajo, que es nuestro directorio donde tenemos el trabajo. Después, existe el "staging area" (¿area de preparación?) que simplemente, son los cambios que hemos realizado. Y después está el repositorio, que allí tendremos todo el trabajo (con las versiones, y comprimido) que hemos confirmado (commit). Y por último está el servidor remoto (si quieres) dónde puedes almacenar una copia de tu trabajo (ya sea privado o público, según tu configuración del servidor).

Una vez hecha esta pequeña (y probablemente, incorrecta) introducción, sólo confesar que trabajo en windows (sí, estoy loco). Así pues, me toca instalar el msysGit que proporciona un Bash Git bastante cómodo (y todo lo q necesitamos, incluido ssh). No voy a explicar cómo se instala (sí, ya sabéis, leeros el acuerdo de licencia, etc etc).

Una vez instalado, abrimos el Bash Git y procedemos a configurar un par de cosillas :)


git config --global user.name "Andres"

git config --global user.email myemail@host.com

Con estas dos opciones, configuramos el nombre y correo del usuario a nivel global. después, navegaremos por la estructura de directorios hasta llegar al de nuestro proyecto existente, y escribimos:


git init

Esto creará un repositorio git en el directorio, y nos permitirá trabajar con él. Ahora, además, debemos añadir los archivos que queremos que se incluyan. Por ejemplo, pongamos que queremos todos los archivos que sean .c, ponemos:


git add *.c

Esto añadirá al repositorio todos los archivos .c que tengamos en el directorio. En mi caso, tenia que añadir todo (subcarpetas incluidas) y escribí esto:


git add .

Y añadió todo al repositorio.  Ahora, si hacemos un:

 git status 

Nos informará de que tenemos 'commits' pendientes de hacer. ¿Qué quiere decir esto? Como bien indica, son "new file" que aún no hemos añadido al repositorio final. ¿Entonces, para que sirve el git add? El git add indica al git que esos archivos SÍ quieres que estén dentro del repositorio, pero no los sube (aunq guarda una versión cache de ellos). ¿Cómo hacemos el commit? Pues, para hacer el commit, hacemos lo siguiente

git commit -m "Commit inicial"

Ahora, si hacemos el git status nos dirá que no hay nada nuevo. Vale, ya está en el repositorio git... ahora vamos a clonarlo al servidor remoto*...

Simplemente, tenemos que hacer lo siguiente:

git push ssh://usuario@servidor.com/ruta/del/repo/aquiesta  master

Vaya... ¿siempre tengo que poner la dirección? No, por suerte, git puede guardar la ruta como si fuera una constante, de la siguiente forma

git remote add elnombrequequierodarle ssh://usuario@servidor.com/ruta/del/repo/aquiesta

Así, para hacer un push sólo tendriamos que hacer lo siguiente:

git push elnombrequequierodarle master

Si alguna vez no nos acordamos de los remotes que hemos añadido, podemos verlos con git remote -v y borrar alguno de ellos con git remote rm

Ahora, ya tenemos nuestra copia en el servidor (en mi caso, ~2000 archivos, tardó un ratito con la conexión lenta >.<). Si modificamos algun archivo, podemos hacer un git status para comprobarlo... y nos dirá que se ha modificado un archivo pero no se ha actualizado. Para actualizarlo, basta con un git add <nombre> y luego hacer un commit (o un commit con la opción -a que añadirá todos los que han sido modificados!)

Si me da el venazo, otro día escribo sobre como borrar archivos, hacer diffs, recuperar versiones antiguas, etc....

Documento utilizado: ProGit

*Nota: Para hacer un push (escribir) en el servidor, necesitas un usuario (luego te pedirá contraseña) con acceso de escritura.

Comentarios (2) Trackbacks (0)
  1. Yo me he mirado github, es un servicio web que te proveen con un repositorio de Git y tiene todo un conjunto de funciones para colaboracion, esta muy bien :) !

    Por cierto, tienes algun proyecto aparte?


Deja un comentario

Aún no hay trackbacks.