Introducción a Git en Terminal y SourceTree (Parte 2)

Standard

Git logo

¡Qué tal! En esta entrega veremos cómo guardar los nuevos cambios realizados en nuestro repositorio, nos adentraremos un poco en la manera de estar al tanto del estado actual de los archivos en nuestro repositorio, y también sabremos cómo revisar versiones antiguas del proyecto.

Bien, sin mayor preámbulo, vamos entrando en materia.

Guardar cambios

Git Add

Este comando agrega un cambio en el directorio de trabajo a nuestro staging area. El comando le dice a Git que se desea incluir modificaciones a un archivo en particular en el siguiente commit. De cualquier manera git add no afecta realmente al repositorio ya que los cambios no son registrados hasta que sea realizada una confirmación, la cual veremos en el siguiente apartado.

En conjunto con esos comandos, desde terminal también es necesario utilizar git status para ver el estado del directorio de trabajo y el staging area.

Cómo agregar archivos al staging area usando Terminal

Abre una terminal y escribe:

git add <archivo>

Organiza todos los cambios en <archivo> para el siguiente commit.

git add <directorio>

Organiza todos los cambios en directorio para el siguiente commit.

git add -p

Comienza una sesión de organización de archivos interactiva que permite elegir fragmentos de un archivo para agregarlas al siguiente commit. Esto presenta porciones de cambios y solicita que se ingrese un comando. Se usa y para organizar el fragmento, n para ignorarlo, s para dividirlo en fragmentos más pequeños, e para editar el fragmento manualmente y q para salir.

Cómo agregar archivos al staging area usando SourceTree
  1. Abre tu repositorio en SourceTree.
  2. Ve a: Menu → View → File status view.
  3. Selecciona en Unstaged files los archivos que deseas agregar al siguiente commit.

Git Commit

Este comando “confirma” en el historial del repositorio los cambios realizados en nuestro proyecto en un momento específico de tiempo. Los cambios confirmados pueden ser pensados como versiones “seguras” de nuestro proyecto —Git nunca los modificará a menos que tú (o alguna otra persona con acceso al repositorio) se lo solicites explícitamente. 

Los cambios realizados son siempre “confirmados” en el repositorio local. Git no vuelve obligatorio el interactuar con el repositorio central hasta que se esté listo. Así como el staging area es un buffer entre el directorio de trabajo y el historial del proyecto, cada repositorio local de un desarrollador es un buffer entre sus contribuciones y el repositorio central.

En lugar de hacer cambios y confirmarlos directamente al repositorio central, los desarrolladores Git tienen la oportunidad de acumular confirmaciones de cambios o commits en su repositorio local. Esto vuelve más fácil el separar una funcionalidad en commits atómicos, manteniendo los commits agrupados y limpiando el historial local antes de publicarlo en el repositorio central. Esto además permite a los desarrolladores el trabajar en un ambiente aislado, aplazando la integración hasta encontrarse en un breakpoint conveniente para ésta.

Cómo hacer commits usando Terminal

Abre una terminal y escribe:

git commit

Confirma los cambios realizados en determinado momento. Esto mostrará un editor de texto que solicitará se ingrese un mensaje para el commit. Después de haber ingresado el mensaje, los archivos son guardados y se cierra el editor para crear el commit actual.

git commit -m "<mensaje>"

Confirma los cambios realizados en determinado momento, pero en lugar de mostrar el editor de texto, usa <mensaje> como el mensaje para el commit.

git commit -a

Confirma todos los cambios realizados en el directorio de trabajo. Esto sólo incluye modificaciones a archivos rastreados (aquellos que han sido agregados con git add en algún momento del historial).

Cómo hacer commits usando SourceTree

Commit en SourceTree

Figura 1: 

  1. Abre tu repositorio en SourceTree.
  2. Ve a: Menu → Repository → Commit…
  3. En Unstaged files, selecciona los archivos que deseas confirmar para agregarlos (git add).
  4. Escribe un mensaje para el commit describiendo los cambios efectuados.
  5. Click en Commit.

Inspeccionar un repositorio

Git Status

Este comando muestra el estado del directorio de trabajo y del staging area. Permite ver cuáles cambios se encuentran ahí, cuáles no, y cuáles archivos no han sido rastreados por Git. La salida del status no muestra ninguna información referente al historial de commits del proyecto. Para esto, es necesario usar git log.

Cómo inspeccionar el status del repositorio en Terminal

Abre una terminal y escribe:

git status

Lista cuáles archivos están en el staging area, cuáles no lo están y cuáles no están siendo rastreados.

Cómo inspeccionar el status del repositorio en SourceTree
  1. Abre tu repositorio en SourceTree.
  2. Ve a: Menu → View → File status view.

Git Log

Este comando muestra el historial de commits del proyecto. Permite listar el historial, filtrarlo y buscar cambios específicos. Mientras que git status permite inspeccionar el directorio de trabajo y el staging area, git log sólo opera en el historial de commits.

Cómo inspeccionar el historial de commits en Terminal

git log

Muestra el historial completo de commits usando el formato default. Si la salida del comando necesita más de una pantalla, puedes usar Space para desplazarte y q para salir.

git log -n <limite>

Limita el número de commits a <limite>. Por ejemplo git log -n 3 mostrará sólo 3 comits.

git log --oneline

Condensa cada commit a una sola línea. Esto es útil para obtener una vista de alto nivel del historial del proyecto.

git log --stat

Junto a la información ordinaria de git log, incluye cuáles archivos fueron alterados y el número relativo de líneas que fueron agregadas o eliminadas en cada uno de ellos.

git log --author="<patrón>"

Busca los commits realizados por un autor en particular. El argumento <patrón> puede ser una cadena o una expresión regular.

Entre algunas cuantas variaciones más utilizadas en casos particulares que no se incluirán para no profundizar demasiado.

Revisar versiones anteriores del proyecto

Git Checkout

Este comando tiene tres diferentes funciones: revisión de archivos, revisión de commits y revisión de ramas.

Revisar un commit hace que nuestro directorio completo de trabajo concuerde con aquel commit. Esto puede ser usado para ver un estado viejo de nuestro proyecto sin alterar de ninguna manera su estado actual. Revisar un archivo permite ver una versión vieja de ese archivo en particular, dejando intacto el resto del directorio de trabajo.

Revisar un commit viejo es una operación de sólo lectura. Es imposible afectar al repositorio mientras sea revisada una versión anterior de éste. El estado actual del proyecto se mantiene intacto en la rama master. Durante el curso normal de desarrollo, HEAD usualmente apunta a master o a alguna otra rama local, pero cuando se revisa un commit previo, HEAD no sigue apuntando a la rama, apunta directamente al commit.

Cómo hacer un checkout a una rama existente usando Terminal

Abre una terminal y escribe:

git checkout master

Regresa a la rama master. Ésta es una manera de regresar al estado “actual” del proyecto.

git checkout <commit> <archivo>

Regresa a una versión previa de un archivo. Esto convierte el <archivo> que reside en el directorio de trabajo en una copia exacta de el <commit> y lo agrega a nuestro staging area.

git checkout <commit>

Actualiza todos los archivos en el directorio de trabajo para que concuerden con un commit específico. Puede ser usado también un commit hash o una etiqueta como el argumento <commit>. Esto nos llevaría a un estado separado en HEAD.

Cómo hacer un checkout a una rama existente usando SourceTree

Checkout de rama existente

Figura 2:

  1. Abre tu repositorio en SourceTree.
  2. Ve a: Menu → Repositorio → Checkout…
  3. Selecciona el commit al que deseas cambiar tu directorio de trabajo.
  4. Puedes seleccionar la opción “descartar cambios locales”.
  5. Click OK.

Hasta aquí la segunda parte de este tutorial introductorio a Git. Los espero en la próxima entrega para adentrarnos un poco más en los usos más comunes al interactuar con colaboradores compartiendo archivos en un repositorio. ¡Hasta luego!

Referencias:

Leave a Reply

Your email address will not be published. Required fields are marked *