SourceTree… ¡Y olvídate de comandos!

El post de hoy lo escribimos mientras jugamos al Worms (que nos deja jugar y escribir una línea en cada turno) y nos hemos dado cuenta de esta gran verdad. El bazooka está bien para matar a un gusano pero…. ¿Porque no usar el lanzamisiles teledirigido? Es algo que te ayuda a no fallar el tiro.

Rapper

Pues lo mismo pensamos que pasa con GIT. Conocer los comandos, está bien, pero en el día a día… no somos robots y es normal que se nos olviden algunos. Y os preguntareis, los más noobs sobretodo ¿Cómo puedo hacer que el control de versiones no sea una herramienta horrible y despiadada? Pues la respuesta es fácil. Existen unas cuantas aplicaciones que de manera visual nos permiten gestionar nuestros repositorios y trabajar con ellos, haciendo nuestra tarea más ligera y menos dolorosa.

Entre estas herramientas, nosotros usamos SourceTree, existen más como por ejemplo GitHub Desktop, pero SourceTree es la que más nos gusta.

SourceTree es una herramienta creada por Atlassian para manejar repositorios de GIT o de Mercurial, a vuestra elección (nosotros somos PRO-GIT). Es gratis (de hecho no nos pagan por esto, lo publicitamos porque realmente nos parece útil) y funciona bien. Una gran contra… sólo está disponible para Mac y Windows. Lo sentimos por los amantes de los sistemas operativos Linux… SourceTree no es para vosotros, os damos una alternativa como SmartGitgitg o GUI para linux.

Os vamos a dejar un breve tutorial de como usar SourceTree, crearemos a la vez un repositorio de prueba para que no se escape ningún paso:

  • Instalar SourceTree. Os aparecerá una pantalla similar a esta pero sin ningún repositorio añadido.Así pinta mi SourceTree
  • Crea tu repositorio: Aquí tenemos dos caminos
    • Crear tu proyecto y después añadirlo a SourceTree. Para ello usa la opción de “Add existing local repository”, dentro del menú “New Repository”. Esto realizará la misma acción que  git init. Posteriormente podrás enlazar tu repositorio local con tu repositorio remoto (en GitHub, BitBucket…), pero necesitarás la URL del repositorio, no lo olvides.
      Captura de pantalla 2015-07-02 a las 01.43.26
    • Clonar el repositorio desde la nube, generando una copia local en tu máquina. Teniendo creado el repositorio remoto, utiliza la opción “Clone from URL”, introduce la URL y la carpeta de destino y tendrás el repositorio preparado.
  • Maneja el repositorio: así vemos la nueva ventana que se abre al tener el repositorio configurado con SourceTreeCaptura de pantalla 2015-07-04 a las 00.17.34
    En esta ventana podremos realizar todas las acciones descritas en en el tutorial de GIT que hicimos anteriormente. SourceTree nos permite, mediante su interfaz, ejecutar todos los comandos de GIT. Los que más vais a utilizar son Commit (subir cambios a repositorio local), Push (subir cambios al repositorio remoto), Pull (bajar cambios de repositorio remoto al repositorio local) y Checkout (cambiar el estado del repositorio a un commit o rama concreta). Reset también os será útil para descartar cambios,¿Por qué mola SourceTree? Porque a parte de no tener que estar metiendo comandos en la consola y dudando siempre del estado de nuestros archivos (o haciendo  git status  todo el rato), nos deja ver cómo se esta creando el árbol de nuestro repositorio, cómo se mezclan ramas, se muestran el estado de los archivos de manera visual y muchas más funciones de las cuales os damos un par de pistas a continuación.Captura de pantalla 2015-07-04 a las 17.28.35
    En la captura podéis ver un ejemplo de cómo se va desarrollando el árbol del repositorio. En la parte inferior de la interfaz podemos ver el estado de nuestros archivos, en este caso hemos creado el archivo “New File”, modificado el archivo “hi” y borrado el archivo “the_other_file”. En la parte superior, podemos seleccionar los distintos “commits” y comprobar los distintos cambios que se han ido realizando. También podemos ver los mensajes de cada uno de ellos, en los que los desarrolladores deberían ir comentando las distintas funcionalidades que han incluido en ese “commit” (IMPORTANTE, estos mensajes no son triviales, nosotros también hemos puesto alguna tontería como título de un commit y luego nos ha pasado factura, así que darles la importancia que tienen).
    Otro detalle el submenú de la izquierda branches nos indica en que rama estamos trabajando ahora mismo, si hay que cambiar de rama, simplemente hay que hacer doble click en la rama a la que nos queremos posicionar.
  • Botones GUAYS que tiene SourceTree:
    • Fetch: nos vale para sincronizar el estado actual de los archivos del repositorio. Normalmente SourceTree se va actualizando sólo, pero si se han hecho cambios hace poco tiempo en el repositorio, puede que no le haya dado tiempo a ponerse al día, pulsando “fetch”, actualiza el estado del repositorio, añade los últimos commits al árbol, últimos cambios en ramas, etc (IMPORTANTE, no baja ningún archivo ni ramas ni nada, sólo te permite poner al día el árbol).
    • Branch/Merge: Estos dos botones nos permiten gestionar las ramas de nuestro proyecto. Como detalle también comentamos que en el menú izquierdo se encuentra un submenú REMOTES, donde encontramos todas las ramas que tenemos en nuestro repositorio remoto, y en las que tendremos que pulsar para clonarlas en nuestro repositorio local, si es que queremos trabajar con ellas. Volviendo a los botones de Branch y Merge, permiten crear y unir las distintas ramas que hay en el proyecto. Profundizando un poco más en el Merge, cuando unimos ramas, puede que haya archivos que han sido modificados en los distintos commits de las ramas y entonces puede ocurrir un conflicto. Para solucionar estos conflictos (NO OS ASUSTEIS, simplemente es comparar el código de ambos archivos e unirlos para que se queden estables), SourceTree tiene una herramienta incorporada para ello. Desde DrunkCode, como programadores móviles de Android e iOS, nosotros usamos las herramientas proporcionadas por AndroidStudio y por Xcode (nos parecen bastante mejores), para más info echad una búsqueda en nuestro gran amigo Google.
    • Tag: nos deja etiquetar un commit. Es algo muy útil para cuando hemos creado una version estable del proyecto (RELEASE) y la queremos tener como referencia, por si hubiera que volver a ese punto más adelante. Nunca se sabe lo que puede pasar.
    • Stash: nos deja guardar unos cambios sin añadir para poder utilizarlos en otro momento. Para ello también necesitaremos manejar el submenú Stashes en la barra izquierda de la interfaz de SourceTree. El ejemplo es el siguiente. Me despisto y estoy haciendo cambios en la rama MASTER, pero yo los quiero subir a DEVELOP. No hay problema, pulso el botón de STASH, introduzco un mensaje para saber que cambios tengo ahí, me cambio de rama, utilizando el submenú de la izquierda y finalmente pulsando sobre STASHES en el submenú de la izquierda otra vez, tenemos nuestros cambios. Doble click en ellos y volvemos a tenerlos preparados para subir en la rama correcta ¡MAGIA!
    • Terminal: SourceTree no se olvida de dónde viene. Si hay algún problema y hay que usar la consola para ejecutar algún comando en especial, a través de este botón se nos lleva a la consola posicionada en el directorio de nuestro repositorio.
    • Git Flow: de esto va nuestro próximo post!

¡Cread un repositorio de pruebas y trastear! El nuestro está en GitHub

Gracias [email protected]

¡Saludos!

 

 

  • Añado que es buena herramienta no solo por tener botoncitos, de un vistazo ofrece muchísima información que con una consola no tienes.

  • Pedro Amador

    Pues no se qué ofrece SourceTree que no puedas tener en consola, sinceramente …. xD

    Buen blog, enhorabuena

  • Pablo

    git status y tienes mas info que la que sale en las pestañas de sourcetree