¡Bienvenidos un día más a un nuevo rootie queridos amigos! Hoy volvemos a la carga con un post sobre git que sé que os va a gustar. Vamos a continuar donde lo dejamos en la anterior entrada. Os traigo un artículo algo extenso, pero mucho más práctico y menos aburrido que el último de algoritmia que publiqué, también vais a poder utilizar todo lo que hablemos en vuestro día a día. Sin más dilación ¡hablemos sobre los comandos básicos de git!
¡Clone, add, commit y push!
Como ya sabemos, GitHub está almacenando nuestro repositorio en remoto, por lo que lo primero que vamos a hacer para empezar nuestro proyecto, bajo el control de versiones, es clonar el repositorio.
git clone
El concepto de clonar, básicamente es realizar una copia exacta del estado actual del proyecto y descargarlo a tu máquina para que puedas empezar a trabajar con él. Normalmente, si estás trabajando solo, clonarás el proyecto nada más crearlo, con lo que estará vacío o contendrá el README.MD si has decidido agregarlo en la creación.

Para clonar un repositorio tenemos que utilizar el comando git clone con la siguiente sintaxis: git clone <url_del_repositorio> <nombre_del_directorio_local> esta última parte es opcional, si se le especifica, git creará un directorio con el nombre del repositorio.
La url del repositorio la vamos a encontrar en GitHub en el botón «Clone repository» y veremos que hay dos opciones: HTTPS y SSH, por ahora, vamos a usar HTTPS, ya que explicaré la configuración SSH en la próxima entrada, con lo que el comando quedaría así:
1 2 3 4 5 6 7 |
ohmyroot-laptop@Merks:~/Desktop$ git clone https://github.com/Merk87/ohmyroot.git ohmyroot Cloning into 'ohmyroot'... remote: Counting objects: 3, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. Checking connectivity... done. |
Este comando podéis ejecutarlo y clonaréis el repo de ejemplo de ohmyroot.
Una vez tenemos nuestra copia local del repositorio, podemos empezar a trabajar en él, así que vamos a crear un archivo index.html con un ohmyroot como titulo.
git status (¡bonus track!)
Una vez creado, vamos a usar el comando git status, que como muchos habréis deducido, nos informará del estado del repositorio local.
1 2 3 4 5 6 7 8 9 10 |
ohmyorot-laptop@Merks:~/Desktop/ohmyroot$ git status On branch master Your branch is up-to-date with 'origin/master'. Untracked files: (use "git add <file>..." to include in what will be committed) index.html nothing added to commit but untracked files present (use "git add" to track) |
Como podemos ver, nuestro nuevo fichero index.html está en la lista de ficheros sin seguimiento («Untracked files»), esto quiere decir que git no lo va a incluir en las revisiones, es decir, no va a controlar ningún cambio.
git add
Para incluir nuestro nuevo fichero en el repositorio, vamos a usar el comando git add. (usando «git add .» se agregan todos los archivos con cambios o sin seguimiento).
1 2 3 4 5 6 7 8 9 |
ohmyroot-laptop@Merks:~/Desktop/ohmyroot$ git add index.html ohmyroot-laptop@Merks:~/Desktop/ohmyroot$ git status On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: index.html |
Como podemos ver ahora nuestro fichero está listado bajo el título Cambios a confirmar (Changes to be commited).
Cuando un archivo es confirmado en git, este incluirá en la instantánea del repositorio la versión del archivo en el momento de ejecutar git add.
git commit
Para confirmar los cambios que ya hemos agregado utilizamos el comando git commit, este es un comando interactivo, si lo ejecutamos tal cual, nos abrirá nuestro editor de texto predefinido en la consola (nano, vim, emacs) y mostrará algo similar:
1 2 3 4 5 6 7 8 |
# Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master # Your branch is up-to-date with 'origin/master'. # # Changes to be committed: # new file: index.html # |
Lo que tenemos que hacer es introducir un texto que describa los cambios realizados en nuestro proyecto, de manera que si necesitamos revisar una instantánea o commit en particular este mensaje nos ayude a entender los cambios. Para que estos logs sean útiles y nos ayuden a entender los cambios realizados, si la confirmación contiene más de un cambio, deberemos hacer una linea por cada cambio introducido.
Deshaciendo entuertos con git
Cuando trabajamos con git, podemos encontrarnos con que uno de nuestros commits ha resultado ser un total desastre y vamos que la hemos liado parda.
«Claro, use git push origin master –force… y la he liao parda»
En este momento, si estamos utilizando Git, es cuando podemos relajarnos, abrirnos una coca cola y proceder con calma a arreglar el desaguisado. Git tienes diferentes opciones dependiendo de la magnitud de nuestro desastre, así que veamos posibles situaciones.
Git reset
Puede pasarnos, que estamos trabajando en nuestro proyecto y sin proponernoslo, hemos agregado un archivo que no queremos confirmar ni subir al repositorio, pero que hemos agregado (como os gusta git add .¡pájaros!)
1 2 3 4 5 6 7 8 9 |
ohmyroot-laptop@Merks:~/Desktop/ohmyroot$ git status On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: este_archivo_no_mola.php new file: este_es_del_lethani.php new file: y_este_tambien.php |
Para corregir esta situación utilizaremos git reset <nombre_del_archivo>, que eliminara el archivo de la lista de preparados, pero mantendrá los cambios que hayamos realizado en el mismo. Este comando no tiene mensaje de salida, con lo que deberéis comprobar con status si se ha reiniciado correctamente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
ohmyroot-laptop@Merks:~/Desktop/ohmyroot$ git reset git y_este_tambien.php && status On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: este_es_del_lethani.php new file: y_este_tambien.php Untracked files: (use "git add <file>..." to include in what will be committed) este_archivo_no_mola.php |
Git checkout – –
Pero y si resulta que lo que hemos trabajado en el archivo no debería estar ahí, no es correcto o se ha agregado por error? En el siguiente código, podemos ver que hemos pegado por error un texto de ejemplo, para deshacer este cambio (sin tener que abrir el archivo y borrarlo manualmente) usaremos git checkout — <nombre_de_archivo>, este comando nos revertirá el fichero al estado el que se encuentra en el ultimo commit.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
ohmyroot-laptop@Merks:~/Desktop/ohmyroot$ git diff y_este_tambien.php diff --git a/y_este_tambien.php b/y_este_tambien.php index 21d54e9..a5399d9 100644 --- a/y_este_tambien.php +++ b/y_este_tambien.php @@ -2,3 +2,8 @@ echo("Esto es un ejemplo"); echo("Que vamos a modificar"); +Lorem ipsum dolor sit amet, consectetur adipiscing elit. +Suspendisse vel libero vulputate risus facilisis dignissim +eget sed enim. Phasellus tempus tellus ipsum, sit amet varius +lorem condimentum sed. Morbi nec ornare ex. Nullam nibh metus, +semper quis neque non, egestas porttitor ligula. +Phasellus quis dapibus massa. Nam at justo venenatis, tempor neque +eget, feugiat erat. Donec ut mauris justo. Aenean ut feugiat lectus. + + |
Git commit – -amend
Y por ultimo, un error que es bastante frecuente es el introducir un error ortográfico u olvidar algo en un commit, si sucede que el mensaje de tu confirmacion no es el que quieres, por las razones que sean, mientras no hayas hecho push, puedes ejecutar git commit –amend, como git commit, este es un comando interactivo, que nos abrirá nuestro editor de texto y nos mostrara el mensaje del commit actual, una vez allí procederemos como si de un commit normal se tratase y al finalizar y guardar el archivo, esta confirmación se actualizara con los cambios realizados y estará lista para ser pusheada.
Y con esto nos despedimos por ahora, en la próxima entrega hablaremos sobre configuraciones del repositorio y un tema muy, muy interesante, las ramificaciones. Para cualquier duda, pregunta, comentario, soborno o amenaza, podéis usar los comentarios o en nuestras redes sociales Facebook y Twitter.
1 |
sudo shutdown -h now |
One Comment