Sourcetree versión 2.7.6

Sourcetree es una herramienta muy útil para gestionar todos tus repositorios. Anteriormente había hecho hace cuatro años un tutorial sobre Source Tree.

Si bien su funcionamiento sigue siendo el mismo, han cambiado algunas cosas que merecen ser vistas. Pero antes hay que descargarlo desde Atlassian y necesitarás registrarte que además te servirá como cuenta de Bitbucket.

Una vez instalado elegimos un directorio como primer repositorio local.

Añadir o crear un repositorio local existente.

O en remoto conectaríamos una cuenta Bitbucket o Github, según nuestra preferencia para que se sincronice nuestros proyectos en remoto. O directamente clonar indicando la url del repositorio remoto.


Elegimos crear un repositorio local eligiendo el directorio y accedemos al repositorio.


Vemos que hay ficheros no preparados. Marcamos la casilla de Ficheros no preparados y automáticamente quedarán todos los ficheros preparados para después realizar el commit. También se pueden elegir individualmente los ficheros no preparados por si no queremos añadirlos todos al commit. En la parte derecha nos muestra el contenido de cada fichero.


En la parte inferior nos aparece Mensaje para Anotar que servirá como descripción del commit. Un commit es como guardar una instantánea del proyecto en ese momento, por eso es muy importante este tipo de herramientas como control de versiones.

Al dar al icono del usuario, nos preguntará nuestro nombre y correo para así identificar quién realizó el commit.

Esto solo se realizará la primera vez aunque si queremos otro usuario diferente que no sea el nuestro y también forma parte del proyecto, pulsamos sobre icono usuario y podremos tener un usuario alternativo.

Volvemos escribir la descripción y después pulsar opción Anotar.

Nos vamos al historial y podremos ver el commit realizado.

Ahora vamos a Configuración, después a la pestaña Remotos y botón Añadir.

Indicamos los datos para el repositorio remoto, con el nombre del repositorio que hayamos creado en GitHub o Bitbucket, la url y nuestro nombre de usuario.

Tendremos que darle a OK para que termine de agregarse el repositorio remoto correctamente.

Ahora vamos a Push para enviar el repositorio local al remoto. Vemos que nos aparece para marcar la rama master (después se irán teniendo más ramas). Damos OK y nos pedirá las credenciales de la cuenta GitHub/Bitbucket para el repositorio remoto.


Si comprobamos nuestro repositorio en GitHub o Bitbucket, veremos que ya está subido.

Cuando realizamos un nuevo commit desde local, Sourcetree nos avisa que una de las ramas está más avanzada que la otra, en este caso la master local frente a la master remota y nos sugiere si queremos hacer un Push para actualizar la remota. Vemos además que en la parte derecha nos muestra los cambios que hay en el fichero, resaltando en rojo lo que había antes frente a lo verde que es el cambio realizado.


 

Olvidé comentar que cuando Sourcetree nos detecta nuevos cambios para realizar un commit, si vamos al historial se nos mostrará en la gráfica por encima de los demás commit que si han sido realizados. Cambios sin un commit.

 

Lo siguiente es trabajar con una rama local nueva que llamaremos develop. Siempre se recomienda trabajar con una rama distinta a la master y será nuestra rama de desarrollo.

Al crearla podemos comprobar que estamos en ella viendo en RAMAS que tenemos marcada develop.

Realizamos cambios y después un commit. Vemos entonces que develop avanza al último commit mientras que master se queda en la anterior.

Realizamos ahora unos test (algo que veremos en un próximo tutorial) de nuestro código y tras el siguiente commit podemos ver que develop sigue avanzando.

Puede ocurrir que ahora realicemos cambios muy pequeños y queramos añadirlos al último commit guardado. En este caso se nos notifica que hay cambios sin un commit y queremos agregarlos a test.

Cuando vayamos hacer el commit, si nos fijamos en la parte derecha vemos que tenemos Opciones de la anotación… Lo que tenemos que marcar es la opción Corregir la ultima anotación y automáticamente nos marcará la anotación del ultimo commit, en este caso test, pero previamente con un mensaje de advertencia que no recomienda esta acción si ya tenemos el cambio anterior en el repositorio remoto. En el caso de no tenerlo le damos aceptar.


Una vez que hayamos hecho los test necesarios para garantizar que los avances de develop son seguros, es hora de fusionar la rama master con develop. Para ello vamos primero a RAMAS para elegir la rama master y después a la opción Integrar. Se nos mostrará la siguiente ventana donde podemos elegir en qué commit queremos fusionar, en este caso en test que es el último, para después marcar algunas de las Opciones que nos ofrece. Si estamos en una situación que no debería haber conflictos entonces con marcar la primera opción ya es suficiente.


A tener en cuenta que si eliminamos ficheros en nuestro proyecto, estos también será detectados y quedan marcados en rojo de la siguiente forma (amarillo con puntos suspensivos son ficheros modificados y con interrogante son ficheros nuevos).

Si tenemos tanto ramas locales como remotas y hacemos un commit en una local, en este caso develop, podemos ver que las ramas que no han hecho el commit aunque sean remotas, nos lo indicará.

Pero claro, eso no significa que si se hacen cambios en el repositorio remoto, estos queden reflejados en local. Para ello tendremos que hacer un Pull (la opción Recibir).

Por supuesto en los casos que hagamos Push, siempre tenemos que asegurarnos en que no habrá problemas y no entre en conflicto con una rama del cual no se desee o no se tenga que modificar en ese momento.

De esta forma iremos teniendo nuestro control de versiones de forma correcta, habituándonos a trabajar con ramas.

 

Para terminar si estamos habituados a los comandos git podemos abrir el terminal desde la opción Terminal que se encuentra en la parte superior derecha.

Ejecutando comando git podremos ver los comandos que se usan habitualmente.

Y la documentación para ver los comandos con más detalle siempre la podremos ver desde git documentation.