Observando los cambios
Con la orden git log
podemos ver todos los cambios que hemos hecho:
$ git log
commit fd4da946326fbe8b24e89282ad25a71721bf40f6
Author: Sergio Gómez
Date: Sun Jun 1612:51:012013 +0200
Se añade un comentario al cambio del valor por defecto
commit 3283e0d306c8d42d55ffcb64e456f10510df8177
Author: Sergio Gómez
Date: Sun Jun 1612:50:002013 +0200
Se añade un parámetro por defecto
commit efc252e11939351505a426a6e1aa5bb7dc1dd7c0
Author: Sergio Gómez
Date: Sun Jun 1612:13:262013 +0200
Parametrización del programa
commit e19f2c1701069d9d1159e9ee21acaa1bbc47d264
Author: Sergio Gómez
Date: Sun Jun 1611:55:232013 +0200
Creación del proyecto
Esto es solo un ejemplo del ejercicio que estoy haciendo, a ti que estas usando el comando git log
no te va a salir esto, pero si algo muy similar con los cambios que hayas hecho en tu repositorio.
También es posible ver versiones abreviadas o limitadas, dependiendo de los parámetros:
$ git log--oneline
fd4da94 Se añade un comentario al cambio del valor por defecto
3283e0d Se añade un parámetro por defecto
efc252e Parametrización del programa
e19f2c1 Creación del proyecto
git log--oneline --max-count=2
git log--oneline --since='5 minutes ago'
git log--oneline --until='5 minutes ago'
git log--oneline --author=sergio
git log--oneline --all
Una versión muy útil de git log esla siguiente, pues nos permite ver en que lugar es está master y HEAD, entre otras cosas:
$ git log --pretty=tformat:'%h %ad | %s%d [%an]' --graph --date=short
* fd4da94 2013-06-16 | Se añade un comentario al cambio del valor por def
ecto (HEAD, master) [Sergio Gómez]
* 3283e0d 2013-06-16 | Se añade un parámetro por defecto [Sergio Gómez]* efc252e 2013-06-16 | Parametrización del programa [Sergio Gómez]* e19f2c1 2013-06-16 | Creación del proyecto [Sergio Gómez]
Crear alias
Como estas órdenes son demasiado largas, Git nos permite crear alias para crear nuevas órdenes parametrizadas. Para ello editaremos un archivo llamado .gitconfig que está en nuestro $HOME y le añadiremos estas líneas al final:
[alias]
hist = log --pretty=tformat:'%h %ad | %s%d [%an]' --graph --date=short
Recuperando versiones anteriores
Cada cambio es etiquetado por un hash, para poder regresar a ese momento del estado del
proyecto se usa la orden git checkout
.
$ git checkout e19f2c1
Note: checking out 'e19f2c1'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want tocreate a new branch to retain commits you create, you may
do so (nowor later) byusing -b with the checkout command again. Exampl
e:
git checkout -b new_branch_name
HEADisnowat e19f2c1... Creación del proyecto
$ cat hola.php
"Hello, World\n";
El aviso que nos sale nos indica que estamos en un estado donde no trabajamos en ninguna rama concreta. Eso significa que los cambios que hagamos podrían “perderse” porque si no son guardados en una nueva rama, en principio no podríamos volver a recuperarlos. Hay que pensar que Git es como un árbol donde un nodo tiene información de su nodo padre, no de sus nodos hijos, con lo que siempre necesitaríamos información de dónde se encuentran los nodos finales o de otra manera no podríamos acceder a ellos.
Volver a la ultima version de la rama master
Usamos git checkout
indicando el nombre de la rama:
$ git checkout masterPrevious HEAD position was e19f2c1... Creación del proyecto
Etiquetando versiones
Para poder recuperar versiones concretas en la historia del repositorio, podemos etiquetarlas, lo cual es más facil que usar un hash. Para eso usaremos la orden git tag.
$ git tagv1
Ahora vamos a etiquetar la versión inmediatamente anterior como v1-beta. Para ello podemos usar los modificadores ^ o ~ que nos llevarán a un ancestro determinado. Las siguientes dos órdenes son equivalentes:
$ git checkout v1^
$ git checkout v1~1
$ git tag v1-beta
Si ejecutamos la orden sin parámetros nos mostrará todas las etiquetas existentes.
$ git tagv1
v1-beta
Y para verlas en el historial:
$ git hist master --all
* fd4da94 2013-06-16 | Se añade un comentario al cambio del valor por def
ecto (tag: v1, master) [Sergio Gómez]
* 3283e0d 2013-06-16 | Se añade un parámetro por defecto (HEAD, tag: v1-b
eta) [Sergio Gómez]
* efc252e 2013-06-16 | Parametrización del programa [Sergio Gómez]* e19f2c1 2013-06-16 | Creación del proyecto [Sergio Gómez]
Borrar etiquetas
Para borrar etiquetas:
git tag-d nombre_etiqueta
Visualizar cambios
Para ver los cambios que se han realizado en el código usamos la orden git diff
. La orden sin especificar nada más, mostrará los cambios que no han sido añadidos aún, es decir, todos los cambios que se han hecho antes de usarla orden git add
. Después se puede indicar un parámetro y dará los cambios entre la versión indicada y el estado actual. O para comparar dos versiones entre sí, se indica la más antigua y la más nueva. Ejemplo:
$ git diff v1-beta v1
diff --git a/hola.php b/hola.php
index a31e01f..25a35c0100644
--- a/hola.php+++ b/hola.php@@ -1,3 +1,4 @@
1]) ? $argv[1] : "Mundo";
@print "Hola, {$nombre}\n";
Source: https://aulasoftwarelibre.github.io/taller-de-git/
Original author: https://github.com/sgomez