SIstema de control de versiones GIT (II)

Usando GIT

Bien, empezemos el verdadero tema, como usar GIT. Lo primero que haremos sera tener en cuenta que esto sirve para desarrollar proyectos asi que hagamos un proyecto de codigo simple, una aplicacion que funcione como sumadora sencilla. Para esto entramos a la parte del disco duro donde trabajemos y desde consola escribirmos

$mkdir sumadora
$cd sumadora
$git init
Initialized empty Git repository in /archivos/proyectos/sumadora/.git/

Con esto ya tenemos nuestro proyecto, aunque vacio por el momento. Lo importante es tener ganas de seguir programando asi que ahora hagamos un poco de trabajo. Escribiremos nuestro programa basico que por el momento solo servira para el ejemplo.

$cat > suma.c << EOF
#include <stdio.h>
int main() {
int a,b;
printf("Hola, por favor escribe un numero: ");
scanf("%d",&amp;a);
printf("Escriba otro numero: ");
scanf("%d",&amp;b);
printf("La suma es %d",a+b);
}

EOF

Con este archivo en creado podemos pasar al siguiente paso: Elegir que queremos mandar al repositorio. Para esto usamos el archivo .gitignore, el cual contiene el contenido de los archivos que queremos dejar lejos del repositorio, entro otros podemos poner lo siguiente

  • *.log
  • secret/*
  • a.out

Y la lista puede crecer, dependiendo lo que necesitemos filtrar dentro del proyecto. Una vez con todo listo haremos un commit, que no es otra cosa que mandar la informacion de lo que hemos hecho al repositorio, que es para lo que lo usamos, para llevar el control de los cambios en nuestro trabajo.

$git add *
$git commit -m "Inicio del proyecto"
[master (root-commit) e484292] Inicio del proyecto
1 files changed, 11 insertions(+), 0 deletions(-)

Con esto haremos 2 cosas. Primero marcaremos dentro de GIT todos los archivos de la carpeta, en nuestro caso suma.c, para que sepa que es lo que queremos enviar por cada revision porque a veces queremos hacer varias modificaciones y enviarlas una a una en grupos y  despues lo mandamos con un mensaje que marca el inicio del proyecto. Si no incluyeramos la opcion -m, entonces nos abriria el editor de textos que usemos para editar la informacion del commit, con la ventaja de que podremos observar con un poco mas de detalle que es lo que sucede con la version que estamos enviando.

Trabajando con GIT

Pongamos un poco de profesionalismo a nuestro proyecto y empezemos a hacer algo importante, el README

$cat > README << EOF
Sistema de calculo de suma

Este programa nos ayuda a calcular el resultado de la suma de dos numeros enteros positivos de una forma rapida y sencilla

Cualquier comentario, duda o sugerencia envienmelo a correo@direccion.com
EOF

$git add README

Y por supuesto, al escribir nuestro readme tenemos que hacerlo parte de nuestro proyecto con git add. Pero vamos a hacerlo interesante ahora editemos suma.c y escribamos el siguiente codigo, recordando meterlo a git con el comando git add <archivo>. Pero antes veamos dos comandos utiles, git status y git diff. Lo haremos en este orden: añadiremos codigo a suma.c y luego veremos las opciones de git para ver que sucede.

printf("La suma es %d\n",a+b);
printf("La resta es %d\n",a-b);
------------------------------------
$git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#	new file:   README
#
# Changes not staged for commit:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
#	modified:   suma.c
#

$ git diff
diff --git a/suma.c b/suma.c
index ca8186b..859c0c9 100644
--- a/suma.c
+++ b/suma.c
@@ -7,5 +7,7 @@ scanf("%d",&amp;a);
 printf("Escriba otro numero: ");
 scanf("%d",&amp;b);
 printf("La suma es %d",a+b);
+printf("La resta es %d",a-b);
 }

+

Lo unico que nos dice en primer lugar es que, se ha añadido un nuevo archivo llamado README que sera enviado con el proximo commit y por otro lado encontro cambios en el archivo suma.c, aunque este no ha sido marcado y por lo tanto no sera enviado al repositorio a la hora de hacer el commit. Despues de esto con el diff podemos ver en que ha cambiado el archivo, donde nos muesta que se agrego una linea con el mensaje de resta y un espacio en blanco al archivo. Si añadimos esto con un git add (suma.c) entonces el diff ya no nos mostrara nada pues estos cambios han sido incorporados a nuestra version actual y por lo tanto no se reconoce como un cambio. Pero hemos cometido un gran error: Nuestro programa es sumadora, no deberia restar por lo que usaremos la opcion reset y regresaremos al archivo a su estado anterior para esta version.

$git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#	new file:   README
#	modified:   suma.c
#

$git reset HEAD suma.c
Unstaged changes after reset:
M	suma.c

$git commit -m "Nuevo archivo con informacion de uso"
[master 5d640f6] Nuevo archivo con informacion de uso
 1 files changed, 5 insertions(+), 0 deletions(-)
 create mode 100644 README

$git status
# On branch master
# Changes not staged for commit:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
#	modified:   suma.c
#
no changes added to commit (use "git add" and/or "git commit -a")

Y asi podemos observar que al principio teniamos ambos archivos listo para commit, pero al regresar a su estado anterior a suma.c nuestro commit solo modifico un archivo, el que acabamos de agregar, y al revisar el estado podemos ver que suma.c sigue en la espera. Por el momento es todo por hoy, esto es lo basico para organizar un proyecto personal, sin armar un grupo ni trabajar en cosas mas especificas como son las ramas, que eso vendra despues.

Como nota, si escribimos git add . (punto), marca todos los archivos modificados para ser enviados.

Anuncios

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