You are on page 1of 6

Git: Comandos bsicos

Este tutorial es totalmente prctico. Se trata de realizar una sesin completa con
Git, paso a paso, y cindonos nicamente a sus operaciones bsicas en modo
local. Lo que haya de hacerse para interactuar con un repositorio remoto queda
para otra prctica.
Mientras he escrito el tutorial he ejecutado la sesin en mi ordenador y lo
reproduzco aqu tal cual.
Casi la totalidad de los comandos Git que he introducido os son ya conocidos de
la prctica online del da pasado. Pero ahora se trata de comentarlos en nuestra
lengua y de volver a ponerlos a prueba en un caso real dentro de nuestro propio
ordenador.

El directorio de trabajo

Lo primero. Vamos a crear una carpeta o directorio de trabajo. Yo lo he llamado


PruebaGit. Podis llamarlo as o elegir cualquier otro nombre. Utilizad las
herramientas de vuestro sistema operativo que queris.
Ahora, ya desde el terminal, toca moverse a ese directorio. Creo que esto ya
sabis hacerlo, algo as cmo:

En Windows: cd C:\Users\Documentos\PruebaGit
En MacOSX: cd /Users/Documentos/PruebaGit
En Linux: cd ~/PruebaGit

La ruta puede variar, dependiendo de dnde hayis creado el directorio y de la


configuracin de vuestro ordenador.

Inicializacin de Git en el directorio de trabajo

Una vez que estamos ah, ejecutamos Git para que supervise y lleve el control de
versiones de lo que vayamos a hacer en nuestro directorio de trabajo.

git init

Si queremos una configuracin especial para Git en este directorio, una distinta
de la configuracin global del da pasado, la podemos realizar ahora:

git config user.name "Luis Sanjun"


git config user.email luisj.sanjuan@gmail.com
git config core.editor vim

1
Si la configuracin va a ser igual que la global, no hay que hacer nada ms.
A partir de este momento, Git controla nuestro directorio y seguir la pista de
los ficheros que le digamos.
Qu ve Git ahora?

$ git status
On branch master

Initial commit

nothing to commit (create/copy files and use "git add" to track)

Como no hay nada en el directorio, Git no ve nada, ms que a l mismo y la


rama master que acaba de crear. Est ah esperando que le digamos qu hacer y
nos hace sugerencias, como la que va entre parntesis. Podemos prescindir de
ellas, de momento, aunque a veces son tiles.

Ficheros no rastreados

Creemos un fichero nuevo en nuestro directorio. Usad las herramientas habituales


para hacerlo. Mejor un fichero de texto, en Markdown ;-), vamos a llamarle
hola.md. Y escribimos en l algo: Hola.
Volvamos a preguntar qu es lo que Git ve tras haber creado este nuevo fichero.

$ git status
On branch master

Initial commit

Untracked files:
(use "git add <file>..." to include in what will be committed)

hola.md

nothing added to commit but untracked files present (use "git add" to track)

Ahora s que ya ve algo, aparte de a s mismo. Ve nuestro fichero, y para l est


en el estado de no rastreado (untracked).

Ficheros rastreados y preparados

Hagamos que Git le siga el rastro. Al hacerlo, lo introduce tambin en el rea de


preparacin (staging area)

git add hola.md

2
Veamos cmo ha cambiado la cosa:

$ git status
On branch master

Initial commit

Changes to be committed:
(use "git rm --cached <file>..." to unstage)

new file: hola.md

Est claro, el fichero esta ah, es ya un nuevo fichero al que Git est siguiendo
la pista, preparado para que sus datos se almacenen en su base de datos de un
modo permanente, cuando se lo digamos, o dicho en terminologa Git, para que
el fichero quede confirmado (committed).

Confirmacin de ficheros

Vamos a hacerlo. Al hacerlo incluimos un mensaje descriptivo de nuestro cambio.


Es un cambio, aunque sea un cambio inicial.

git commit -m "Primera versin de hola.md"

Esto nos va a devolver un mensaje con lo que Git ha hecho:

[master (root-commit) b4a5186] Primera versin de hola.md


1 file changed, 1 insertion(+)
create mode 100644 hola.md

Y si ahora volvemos a ejecutar git status el ciclo se repite. Pero ahora es ms


breve. Su base de datos ya est en funcionamiento y operativa, con cambios
permanentes almacenados. Todo lo dems est limpio y no hay nada nuevo en el
directorio en relacin con lo que se ha grabado en la base de datos.

$ git status
On branch master
nothing to commit, working directory clean

Ficheros modificados

Ahora toca trabajar sobre nuestro fichero hola.md de la forma habitual, cam-
bindolo. Vamos a escribir en l Hola, Git, en lugar del Hola que haba.
Qu ve Git despus del cambio?

3
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: hola.md

no changes added to commit (use "git add" and/or "git commit -a")

Aparte de los mensajes de antes, lo nuevo ahora es que Git observa que hemos
modificado el fichero hola.md. Para l ahora est en un nuevo estado: modificado.
Git sabe esto, porque est comparando lo que tiene en su base de datos con lo
que hay ahora en el directorio de trabajo.
Desde aqu, el ciclo anterior se repetira. Aadiramos otra vez el fichero hola.md
al rea de preparacin y desde ah lo confirmaramos. Por supuesto, no tenemos
porque ejecutar estas operaciones inmediatamente. Podemos seguir trabajando y
modificando nuestro fichero, y dejar el proceso de preparacin y confirmacin
para cuando decidamos almacenar en la base de datos de Git los cambios de
forma permanente. Vamos hacerlo ahora:

git add hola.md


git commit -m "Segunda versin de hola.md"

Los mensajes de estado y el mensaje final sern semejantes a los anteriormente


vistos.

El historial de versiones

Para terminar esta primera sesin real con Git podemos pedirle que nos muestre lo
que hay en su repositorio, esto es, los cambios (versiones) que hemos confirmado
para que se almacenen permanentemente en su base de datos.

$ git log
commit b383d7aea7baacba70db9fe7827232f35882ecd5
Author: Luis Sanjun <luisj.sanjuan@gmail.com>
Date: Mon Feb 2 17:18:41 2015 +0100

Segunda versin de hola.md

commit b4a5186a71e3ebf712de2f340f1d2ee7fa28cf7a
Author: Luis Sanjun <luisj.sanjuan@gmail.com>
Date: Mon Feb 2 17:05:01 2015 +0100

Primera versin de hola.md

Aqu estn nuestras dos versiones, con su autor, hora, fecha de confirmacin
y el mensaje que introducimos en el momento de confirmarlas. Tambin hay

4
un nmero arriba, un identificador nico de cada confirmacin. Como se ve, se
muestran en orden cronolgico descendente.
Algo ms interesante es pasar la opcin -p o --patch (de parche). Nos mostrar
no slo el historial de versiones, sino, adems las diferencias entre la versin
original y la versin parcheada, o sea, cambiada.

$ git log --patch


commit b383d7aea7baacba70db9fe7827232f35882ecd5
Author: Luis Sanjun <luisj.sanjuan@gmail.com>
Date: Mon Feb 2 17:18:41 2015 +0100

Segunda versin de hola.md

diff --git a/hola.md b/hola.md


index a19abfe..68ec2cd 100644
--- a/hola.md
+++ b/hola.md
@@ -1 +1 @@
-Hola
+Hola, Git

commit b4a5186a71e3ebf712de2f340f1d2ee7fa28cf7a
Author: Luis Sanjun <luisj.sanjuan@gmail.com>
Date: Mon Feb 2 17:05:01 2015 +0100

Primera versin de hola.md

diff --git a/hola.md b/hola.md


new file mode 100644
index 0000000..a19abfe
--- /dev/null
+++ b/hola.md
@@ -0,0 +1 @@
+Hola

La segunda versin de nuestro fichero hola.md es una versin parcheada de


la primera. Se muestran las lneas en que difiere de ella. La lnea en la versin
original, sin el parche, aparece precedida por -, mientras que la nueva lnea que
est en su lugar, la que incluye el parche o modificacin de la lnea original
aparece precedida por +. Estos signos - y + son convencionales para mostrar
diferencias entre lneas de ficheros. Se observa adems que en la informacin
sobre la primera de nuestras versiones, no hay nada de lo que la lnea Hola
difiera. Es lgico, fue nuestra primera versin, no hay nada (/dev/null) con la
que compararla.

Resumen de comandos

git init: Inicia Git sobre el directorio en el que estamos.

5
git status: Muestra el estado de los ficheros en el directorio de trabajo.
git add <fichero>: Aade el fichero al rea de preparacin. Adems, si
el fichero no estaba rastreado, cambia su estado a rastreado.
git commit -m "Mensaje": Confirma lo que resida en el rea de prepa-
racin. Los datos se almacenan permanentemente en el repositorio con el
mensaje asociado.
git log: Muestra el historial de versiones.
git log --patch: Muestra historial de versiones con diferencias incluidas.

Ejercicios

Reproducir la misma sesin que he ejecutado aqu.

You might also like