UTILIZANDO EL SISTEMA DE VERSIONADO
Llegados a este punto, quiere decir (espero), que ya tienen el repositorio clonado correctamente en sus PCs. Así que ya están listos para empezar a usarlo. Lo bueno de este tipo de sistemas de versionado es que se puede utilizar de manera local sin conexión a internet, así que si por alguna razón no tenemos internet podemos seguir trabajando y subir los cambios una vez que volvamos a contar con una conexión.
La principal función de este sistema es permitirnos guardar un historial de todos los cambios que vamos haciendo y volver a cualquier punto de esos cambios en cualquier momento. En cada momento que vayan avanzando con Git, tanto en este tutorial como en sus proyectos personales, piensen en Git como una máquina del tiempo. Esta máquina puede retroceder y volver en el tiempo a cualquier punto que haya pasado. Además, también puede crear “realidades” paralelas (branches), y después después combinarlas en una sola realidad (merge). Esto nos permite dividir nuestro proyecto en features diferentes, y permitir que varias personas trabajen en el mismo proyecto, para luego combinar todos esos cambios en una sola “realidad” (branch). Por supuesto también puede pasar, que cada realidad haya cambiado tanto la historia de las distintas partes del proyecto, que al momento de querer combinarla con otra o con la realidad principal (master), haya conflictos y tengamos que decidir nosotros mismos cómo fusionar esas realidades, ya que Git quizás no pueda hacerlo automáticamente debido a que las historias de los archivos involucrados cambiaron a tal punto que son diferentes en cada realidad.
Además también nos va a permitir guardar cada uno de esos cambios con un comentario que nos va a permitir “recordar” qué fue lo que cambiamos y/o por qué lo hicimos. También nos permitirá saber quién fue el que hizo esos cambios.
Tener en cuenta esta analogía en cada paso que dan con Git quizás les sirva para entender por qué Git a veces no puede hacer determinadas cosas, y por qué algunas cosas tienen sentido y otras no.
AGREGANDO ARCHIVOS NUEVOS
Si van a la carpeta donde tienen el proyecto de Git, van a encontrar que está vacía (aunque tiene algunos archivos ocultos que por el momento no son relevantes). De ahora en más, cada cambio que hagan en esta carpeta va a ser detectado por el sistema de versionado y ustedes van a poder verlo, a menos que sea un archivo de los que agregaron a la lista de ignorados. Este archivo está oculto, y si activan la visualización de archivos y carpetas ocultas, van a encontrar toda la configuración de su repositorio.
Vamos a empezar creando un archivo de texto vacío. Prueben hacerlo. Creen un archivo cualquiera y pónganlo dentro de esa carpeta. Por ejemplo, yo voy a crear un archivo de texto llamado “Sarasa.txt” con el texto “Esto es un archivo de prueba.” dentro. Al volver a SourceTree, van a encontrar algo como esto:

También les va a aparecer un “1” arriba a la izquierda, en el botón que tiene un signo “+” y dice “Commit“. Eso significa que acaban de modificar 1 archivo. Si hacen click ahí, les va a mostrar cuál fue.

SourceTree usa determinadas vistas para ver los archivos y su estado actual. Si la imagen que les muestro no es la que les aparece a ustedes, les recomiendo cambiar esa vista, tildando las siguientes opciones:

ARCHIVOS NO TRACKEADOS
Todos los archivos que aparezcan con un ícono violeta y el signo de pregunta significa que son archivos no trackeados. Esto significa que el repositorio no los conoce y por ende no tienen ningún tipo de historia dentro del mismo. Les va a aparecer así cada vez que se agreguen archivos nuevos al proyecto. De esta forma, cuando ustedes agregan algún plugin o un conjunto de cosas dentro del repositorio, van a ver acá todo lo que es NUEVO.
Vamos a volver a hablar de estos archivos en algún momento, pero por ahora sólo vamos a agregarlos. Para ello, hacen click en la casilla que figura al lado del archivo, o lo seleccionan y presionan la barra espaciadora. Con esto van a ver que el archivo pasa ARRIBA.

Esta área de arriba se llama “Stage“, y muestra todos los archivos que están LISTOS para marcarles un paso en su historia. Este paso se llama “Commit“. Básicamente cada vez que agreguemos o modifiquemos archivos dentro de nuestro repo, los commits nos van a marcar cada uno de esos cambios. Por supuesto podríamos poner uno o varios archivos, y cada “commit” que hagamos va a representar los cambios que sufrió nuestro proyecto en cada paso. A lo largo toda la vida útil de nuestro proyecto, vamos a ver reflejados cada uno de esos cambios agrupados en estos pasos.
A continuación, vamos a crear un punto de historia para nuestro proyecto. Para eso, en la parte de abajo de SourceTree vamos a tener un campo de texto para escribir. En este campo vamos a escribir lo que representa este cambio para la historia de nuestro proyecto. Por ejemplo: “Agregué un archivo nuevo al repositorio para testear cosas“.

Luego presionamos el botón “Commit” que está abajo a la derecha. Y con esto ya tenemos creado un punto más en la historia de nuestro proyecto! Digo “un punto más” porque inicialmente van a ver que hay uno, que representa básicamente el punto de partida de nuestro proyecto, cuando lo creamos en GitHub.


Fijense que ahora aparece un “1” en otro botón, llamado “push“. Esto está indicando que “1 cambio” que nosotros tenemos en nuestro repositorio de manera local, pero que NO ESTÁ aún en el repositorio online. Esto también es representado por la parte que dice “1 ahead”, que significa que nuestro repositorio local está 1 paso en la historia delante de nuestro repositorio online.
Como les había dicho con anterioridad, ustedes pueden trabajar con esto incluso sin tener internet. Así que pueden subir todos los cambios que quieran y luego subir todos los puntos de la historia juntos. Incluso también puede pasar que estén trabajando y no estén seguros de que todos los puntos que agregaron sean los que quieren subir y después quieran volver atrás, o eliminar algunos puntos. En base a eso podrían querer no subirlo todo al servidor. Mi recomendación es que siempre lo suban, ya que si incluso en algún punto quieren volver atrás en la historia, también pueden ir de nuevo para adelante, si esos cambios están online. Si ustedes no lo subieran, y retrocedieran pasos en la historia, esos pasos que les quedaron se perderían directamente.
Aclarado esto, vamos a hacer click en el botón de “push” y ver cómo quedarían nuestros cambios. Al hacer click en ese botón les va a salir esta ventana:

En esta ventana ustedes pueden elegir a qué repositorio subirlo. Pero como sólo vamos a tener uno, tocamos directamente en el botón “Ok” y listo. Van a ver que aparece una barra de progreso, y cuando la barra se vaya vamos a tener nuestro proyecto actualizado de manera online.

Y con esto tendríamos nuestro repositorio actualizado tanto local como online! Así que si en algún momento queremos pasarnos a otra computadora y bajar el proyecto, este va a contener los últimos cambios. Es ideal también cuando están trabajando en una notebook, en algún lugar, y luego llegan a sus casas y quieren continuar en su PC personal.