Compartir
Publicidad

Cómo manejar Git como un experto desde Android Studio

Cómo manejar Git como un experto desde Android Studio
Guardar
5 Comentarios
Publicidad
Publicidad

Hoy en día no nos imaginamos el desarrollo de un proyecto de software que no incluya un control de versiones, entre las diferentes opciónes para un VCS, Git, sin duda, se ha posicionado favorablemente por delante de otros grandes como Subversion y Mercurial.

La curva de aprendizaje que este tipo de herramientas suele implicar suele ser bastante alta, ya que la gran variedad de características y opciones que incluyen lo convierten en recursos complejos a la vez de muy potentes.

Tanto para los menos experimentados, como para los expertos manejando un VCS, es importante tener buenas herramientas o un entorno lo suficientemente configurado para tratar con el mismo de manera rápida y efectiva.

Este post acerca, a usuarios de entornos de desarrollo de la familia de JetBrains, diversas curiosidades y ejemplos de como manejar algunas de las herramientas para el manejo de un control de versiones, logrando una mayor cohesión entre el desarrollo y el versionado del mismo.

Comparaciones

Entre otros beneficios que obtenemos utilizando un control de versiones, está el de poder comparar archivos con sus diferentes estados a lo largo del tiempo. Para ello, JetBrains dispone, desde mi punto de vista, de una de las herramientas de diff / merge más potentes e intuitivas a utilizar a la hora de comparar cambios.

Un buen uso de estas herramientas permite agilizar bastante el trabajo del día a día, ya que estas comparaciones son frecuentes a medida que se modifica el código (añadir, borrar y cambiar) o se revisa. Además, estas modificaciones suelen ser complejas de representar, por lo que no es fácil encontrar una buena herramienta que exprese bien los cambios.

IntelliJ como herramienta de diff y merge

A partir de la versión 2016 de IntelliJ, JetBrains ha incluído una opción muy interesante llamada 'Create command line launcher', la cuál Android Studio ha heredado en su actualización a la versíon 2.2.

Esta nueva opción, permite utilizar el diff / merge de IntelliJ o Android Studio de manera externa, de tal modo que las podríamos utilizar tanto desde línea de comandos como desde nuestro cliente de VCS favorito.

Así, entre otras situaciones interesantes podríamos resolver un conflicto o comparar varios archivos utilizando estas herramientas externas. Como alternativa, herramientas como Kaleidoscope o Filemerge también están orientadas al comparado archivos.

La gran mayoría de clientes de control de versiones suelen permitir utilizar herramientas diff / merge de manera externa, si eres usuario de algún entorno de JetBrains, no tienes escusa para no utilizarlas.

El cliente externo que yo suelo utilizar es SourceTree de Atlassian. Para configurar el diff / merge de Android Studio en este cliente tan solo es necesario configurar la ruta del binario creado por IDE (por defecto /user/local/bin/studio) en la sección de ajustes de SourceTree: Settings/Diff, seleccionando la herramienta externa como other junto a los parámetros apropiados.

Comparar el archivo actual con su versión una rama en particular

IntelliJ y Android Studio permiten comparar el archivo abierto en el editor con su respectiva versión en otra rama. Esto puede ser interesante en varias situaciones como revisiones de código o pull requests, o verificar si un conflicto se ha solucionado correctamente.

Esta opción, disponible en los menús o buscando directamente ( ⌘ + A ) por Compare with branch, permite seleccionar cualquier rama existente en el control de versiones, tanto local como remota para comparar los cambios con la herramienta diff.

Comparar un commit anterior

La opción Compare with... nos permitirá mediante un pop-up seleccionar rápidamente, un commit que hayamos realizado en algún momento anterior para comparar el archivo que tengamos abierto.

Si en cambio, queremos mostrar la historia de commits por donde el archivo que tengamos abierto ha ido cambiado, podemos utilizar la opción Show history..., la cuál utilizará un panel fijo en la parte inferior del IDE.

Manejando los cambios

A menudo, después de editar varios archivos, puede ser útil comprobar qué cambios han sido realizados desde el último commit, la opción local changes pondrá el foco en un panel inferior mostrando todos los archivos editados.

Sin leventar las manos del teclado podremos realizar acciones como:

Seleccionar arhivo(s) y hacer commit - ( ⌘ + K )


Mostrar diff con las modificaciones respecto al último commit - **⌘ + D **


Restaurar los cambios de archivo rápidamente con la opción revert - **⌥ + ⌘ + Z **

Esta opción, además, puede ser utilizada en otros contextos aparte del log. Con cualquier archivo podemos utilizar la opción revert para restaurar los cambios respecto a la versión existente en el control de versiones.

Nota: Normalmente, los cuadros de diálogo pueden cerrarse via tab + enter

Mostrar el log del control de versiones

Pese a que, personalmente, me gustan más clientes como SourceTree, el cuál tiene una forma clara e intuitiva de mostrar el log, Android Studio e IntelliJ también implementan esta característica, podemos acceder con la opción Show VCS log.

Como ventajas, al estar integrado dentro del IDE aprovecha todas las capacidades de navegación que posee IntelliJ, por lo tanto, podremos interactuar con el log fácil, rapida y visualmente mediante el teclado.

Si seleccionamos cierto commit y con find action ( ⇧ + ⌘ + A ) comenzamos a escribir la opción deseada, el entorno interactuará en el contexto donde esté el commit, de tal modo que podríamos hacer reset, checkout y cherrypick entre otros de manera rápida y cómoda.

Además, podemos abrir comparaciones con la herramienta diff de manera sencilla posicionandonos en un commit y pulsando ( ⌘ + D ).

VCS operations popup ( ⌃ + V )

De forma sencilla podemos mostrar un popup con las opciones más utilizadas trabajando con un control de versiones: commit, branches, operaciones de stash, etc.

Realizando commits

Uno de los requisitos clave a la hora de utilizar adecuadamente un control de versiones es realizar commits con poca frecuencia y de la manera más atómica posible. Se considera que un commit es atómico cuando las modificaciones contenidas en él hacen referencia a un sólo cambio, además, un commit debería tener un título claro, conciso y descriptivo.

Sin embargo, puede llegar a ser tedioso, en entornos donde se utilize un cliente de terceros o una línea de comandos sin una gran personalización, realizar commits de manera rápida.

Commit rápido - ( ⌘ + K ) + (tab + enter)

Utilizando el cliente VCS integrado de Android Studio / IntelliJ, y probablemente alguno más perteneciente a la familia de JetBrains, con el atajo ( ⌘ + K ) + (⇥ + enter) podremos tener un commit listo en 5 segundos.

Además, podemos activar diversas opciones como inspeccionar el código antes de realizar el commit, organizar imports o seleccionar los cambios a incluir en el commit en función de los archivos modificados.

Integración con GitHub

IntelliJ, Android Studio y seguramente, otros entornos de la famlia de JetBrains ofrecen una integración con GitHub, esto brinda al IDE de ciertas características interesantes que pueden ser de bastante utilidad si trabajamos cotidianamente con esta plataforma.

Obtener links directos al repositorio

Ya sea en el explorador de archivos del proyecto, o bien editando un archivo, la acción Open on GitHub abrirá tu navegador con la versión remota de dicho archivo.

Además, si lanzamos esta opción con un texto seleccionado en el editor, este texto también saldrá resaltado en el navegador, muy útil para compartir entre miembros del equipo a la hora de mostrar algo.

Crear un Pull Request

La opción de Create Pull Request permite crear Pull Requests en GitHub utilizando como rama base la que tengamos configurada como principal en el repositorio, y como candidata al merge la que estemos trabajando en el IDE.

Crear un Gist

Análogamente, podemos crear Gists en GitHub tanto privados como anónimos, con la opción Create Gist.

Referencias

How to write a commit message - Chris Beams.

Version Control Help - IntelliJ IDEA

450 1000

Saúl Molinero es una persona entusiasta con pasión por el desarrollo móvil. Actualmente, trabaja como desarrollador android en Popsy Buy & Sell.

Además, participa activamente con varios GDGs (Google Developer Groups) además de crear y compartir contenido con diversas comunidades de desarrolladores.

Puedes encontrarlo en su blog personal, Github, en twitter y en Google+.

Temas
Publicidad
Publicidad
Publicidad

Ver más artículos