Git desde la linea de comandos

Comandos básicos para utilizar GIT desde la línea de comandos

Publicado el: 20 de Enero 2018 por Victor de Andrés Archivado en: Git | Fudamentos | Desarrollo
git linea comandos

En la actualidad cualquier desarrollador en su trabajo habitual utiliza un repositorio de código, si no es así debes empezar inmediatamente. El repositorio de código de facto que se suele utilizar es GIT, a través de servicios web como GitHub, GitLab, Bitbucket o Stash, ect… Aunque también podemos encontrarnos con repositorios de código como Subversion o TFS de Microsoft.

En este post nos vamos a centrar en GIT. En el veremos unas sencillas reglas o buenas prácticas para hacer un correcto uso de este repositorio de código y los comandos básicos que deberemos utilizar independientemente del servicio web que utilicemos para trabajar habitualmente.

Buenas practicas o GitFlow

Nuestro proyecto siempre debe tener 4 ramas claramente diferenciadas, aunque cada equipo de desarrollo puede tener su propia metodología:

  • Master: La rama principal, donde se encuentra el repositorio de producción. Esta rama debe ser siempre estable.

  • Development: Aunque mucha gente da por hecho que es la rama de desarrollo, no es correcto. Development es la rama de integración. En esta rama es donde se deben integrar todos los desarrollos. Y corregir los errores ( en caso de encontrar alguno ) principalmente debido a la integración de distintas partes del desarrollo. Por ello development debería ser una rama estable a partir de la cual poder realizar un merge sobre la rama master.

  • Features: En esta rama es donde deberíamos realizar los desarrollos. Debemos crear una nueva rama Feature para cada una de las partes específicas de la funcionalidad. Esta rama siempre tendrá como origen la rama development. Y una vez se encuentre desarrollada y testada la funcionalidad se realizará un merge sobre development, donde se integrará con el resto de funcionalidades.

  • Hotfix: En esta rama se encontrará el código que solvente los posibles bugs que surgen en producción. Como en esta rama vamos a arreglar bugs del código ya en producción, esta deberá partir de master. Una vez arreglado el error deberemos hacer un merge primero sobre la rama master y posteriormente sobre la rama development para que esta se encuentre actualizada.

Comandos GIT

Todos los servicios web que hemos comentado anteriormente tienen sus propios frontend, o podemos tener aplicaciones de escritorio, como por ejemplo SourceTree, que se conectan a estos servicios web para hacer las tareas habituales para mantener sincronizados nuestro código con el repositorio central.

Yo prefiero utilizar la consola y hacer esta tarea a través de los comandos ya que de esta manera no dependo de conocer un servicio web u otro.

A continuación iremos viendo uno a uno los comandos más importantes a través de un pequeño ejemplo, que espero que haga que sea un poco más ameno la lectura de este post.

Comenzemos

El primer paso que siempre realizaremos será sincronizar nuestra carpeta local con el servidor. Para ello utilizaremos el comando: cloen <dirección_http_servidor> <directorio_local>

Por ejemplo para bajarnos el repositorio “Test_Git” en la carpeta “Proyectos” de nuestro equipo, deberíamos introducir el siguiente comando:

      
  git clone https://servidorGIT/Test_Git ./proyectos
      
    

Una vez ya tengamos la carpeta “Test_Git” en nuestra carpeta de proyectos comenzaremos a trabajar en nuestro proyecto. Suponemos que ya tenemos creadas las ramas master y develop creadas. Para ello lo primero que vamos a realizar es crear una nueva rama “feature” en la cual escribiremos el código para hacer el login en nuestra nueva aplicación.

Ramas.

Para crear una rama utilizaremos el comando brnach. Como la funcionalidad que vamos a escribir es para hacer el login en nuestra aplicación el nombre de la rama será feature/login. Y al ser una rama de desarrollo esta partirá desde develop.

      
  git branch feature/login develop
      
    

En caso de no introducir el nombre de la rama origen, por defecto se creará de la rama en la que nos encontremos en ese momento.

Para comprobar que se ha creado correctamente la rama, podemos utilizar el comando branch. Ya que cuando ejecutemos este comando no obtendremos ningún mensaje.

      
  git branch
      
    

Y ahora te preguntaras, pero no hemos utilizado este comando anteriormente para crear la rama. Sí, es verdad. El comando branch crea una nueva rama cuando le indicamos un nombre de una nueva rama, y si no indicamos ningun nombre nos mostrará el listado de ramas de nuestro repositorio.

Que nos mostrará todas las ramas de nuestro repositorio, y en esta lista veremos que tenemos una línea con nuestra nueva rama, feature/login.

Si algún compañero nuestro ha creado alguna nueva rama, nosotros no la veremos en nuestro listado de ramas. Para solventar esto simplemente deberemos ejecutar el siguiente comando:

      
  git fetch
      
    

Que descargara todos los cambios que se hayan realizado en el repositorio central.

Una vez creada y verificada que hemos creado nuestra rama correctamente comenzaremos nuestros trabajo de desarrollo. Para ello lo primero que deberemos realizar será movernos a nuestra rama de desarrollo “feature/login”. Para ello utilizaremos el comando checkout.

      
  git checkout feature/login 
      
    

Subida o push

Supongamos que ya hemos realizado algunas modificaciones el código de nuestro proyecto. Lo primero que vamos a ver es los fichero que hemos modificado. Para ello utilizaremos el comando status, el cual nos mostrará una lista de los ficheros que se han creado/modificado y/o borrado.

      
  git status
      
    

Ahora veremos en pantalla todos los ficheros que han sido creados/modificados y/o borrados.

Normalmente siempre subiremos a nuestro repositorio todas las modificaciones que hemos realizado. Para ello utilizaremos el comando add, con el que marcaremos los ficheros que queremos subir a nuestro repositorio.

Si queremos subir todas las modificaciones que hemos realizado debemos introducir el siguiente comando.

      
  git add --all 
      
    

Marcara todos los documentos para subirlos al repositorio o

      
  git add .
      
    

que marca todos los documentos que hemos modificado o insertado, excluyendo los borrados.

Pero si quisieramos subir sólo algún fichero(s) en concreto seguimos utilizando el comando add. En esta ocasión seguido del nombre del fichero(s) que queremos marcar. Por ejemplo:

      
  git add login.html
      
    

Con lo cual habremos marcado el fichero login.html para posteriormente subirlo al repositorio.

Una vez marcados todos los ficheros que vamos a subir a nuestro repositorio debemos agruparlos en un commit o hacer. Para después subirlos a nuestro repositorio. Una de las ventajas de git es la posibilidad de trabajar offline. Esto nos permite hacer varios commit, que se quedan almacenados en nuestro equipo y posteriormente cuando tengamos conexión subir todas los commits que hemos realizado.

Para realizar un commit el comando que utilizaremos será commit seguido de un mensaje para que todo el equipo conozca que hemos subido en este commit.

      
  git commit -m "Añadimos fichero login html"
      
    

Una vez realizado el commit o commits el último paso que tenemos que realizar es subir estos cambios al repositorio central para que estén disponibles para todo el equipo. Para ello utilizaremos el comando push, que tiene la siguiente sintaxis: git push origin <nombre de la rama origen>

En nuestro caso como nos encontramos en la rama feature/login el comando sería:

      
  git push origin feature/login
      
    

Integración

Una vez subido el código al repositorio, y estando ya testado vamos a comenzar con la integración de las distintas ramas.

Siguiendo nuestro ejemplo, donde nosotros hemos creado la rama feature/login, que es la funcionalidad del login de nuestro proyecto, mientras tanto un compañero nuestro ha escrito el menú principal, para lo cual creó la rama feature/mainmenu y lo subió al repositorio central.

Para realizar la integración nos situaremos en la rama develop,

      
  git checkout develop
      
    

E importamos las modificaciones de ambas ramas en nuestra rama develop. Para ello utilizaremos el comando merge cuya sintaxis es: merge <nombre de la rama>. Como en nuestro ejemplo ahora mismo tenemos dos ramas sin integrar deberemos realizar este comando en dos ocasiones, una por cada una de las ramas que queremos integrar.

      
  git merge feature/login
      
    

Para integrar la rama feature/login, y a continuación integraremos la rama feature/mainmenu

      
  git merge feature/mainmenu
      
    

Una vez integradas las dos ramas en nuestra rama de desarrollo, realizaremos las pruebas de integración. Y si todo es correcto podremos pasar a nuestra rama principal o master.

Para ello seguiremos los mismos pasos que hemos seguido hasta el momento para la integración de estas dos ramas.

Primero nos situaremos en la rama master,

      
  git checkout master
      
    

y posteriormente realizaremos la integración de develop en master a través del comando merge.

      
  git merge develop
      
    

Y hasta aquí los comandos básicos para subir nuestro código a un repositorio. Como has podido leer, no son muchos los comandos y son muy sencillos.

Sincronización

Y finalmente vamos a ver un último comando para sincronizar todos los cambios que existen en nuestro repositorio central con nuestro repositorio local.

Para ello en primer lugar nos situaremos en la rama que deseemos sincronizar con el comando checkout, como hemos visto anteriormente, y posteriormente ejecutaremos el comando pull

El cuál nos descargara todas las modificaciones existentes en el repositorio central para de esta forma tener en nuestro equipo el proyecto totalmente actualizado y podamos seguir trabajando con todos los cambios que han realizado nuestros compañeros de equipo.

Supongamos por ejemplo que queremos seguir desarrollando en la rama mainmenu, que había comenzado nuestro compañero para ello utilizaremos el siguiente comando:

      
  git pull origin feature/mainmenu
      
    

En un próximo post seguiremos viendo algunos comandos más de git para nuestro trabajo diario, pero si quieres profundizar en las distintas posibilidades que tienen los comandos que hemos vistos hasta el momento, o ver más comandos puedes ir a la página oficial de git https://git-scm.com/ donde tienes una información mucho más extensa.

Comentarios
Escribe tu comentario