Saltar a contenido

Git

¿Qué es git?

Es importante dejar claro que git no es lo mismo que GitHub, git es un sistema de control de versiones Open Source creado en el año 2005 por Linus Torvalds, el creador de Linux, por otro lado GitHub es un servicio de alojamiento para proyectos versionados con git, de esta forma podemos tener una copia local y una remota de nuestros repositorios.

Con git podemos entre otras cosas: tener un control de ediciones versionadas, regresar a versiones anteriores de nuestros proyectos, revisar el registro de cambios y crear ramas experimentales o mejoras paralelas al proyecto troncal.

Instalación

Primero debes descargar e instalar la versión de git para tu sistema operativo desde https://git-scm.com/downloads

Para comprobar que la instalación fue realizada en la terminal de comandos escribes git --version, si fue instalado verás la versión de tu instalación de git.

Configuración básica

Es importante configurar al menos un nombre de usuario y un correo electrónico, para ello escribes en la terminal git config --global user.name ‘tunombre’, pasando entre comillas tu nombre de usuario y git config --global user.email tuemail pasando sin comillas tu email.

Inicializar un repositorio

Para que la carpeta de un proyecto en tu equipo pase a ser un repositorio de git debes inicializarla, en la terminal debes posicionarte en la carpeta del proyecto y escribir git init, esto creará una carpeta oculta de nombre .git la cual contiene toda la información del versionamiento.

A continuación se hace necesario comprender los estados de git en nuestro repositorio local y los comando necesarios para movernos entre ellos.

En la imagen de referencia se describen tres estados: el working directory, este es el sistema de archivos en el cual trabajamos, el staging area, un área temporal en el que añadimos los archivos cuyos cambios estamos por enviar a git y el repository, donde se versiona nuestro trabajo.

Añadir archivos, status y commit

Para añadir cambios al staging area, lo haces con git add . para incluir los cambios realizados en todos tus archivos y git add archivo.txt si lo que quieres es incluir los cambios de un archivo en particular.

Para comprobar el estado de los archivos escribimos git status, de esta forma sabrás cuales están en el staging area listo para ser enviados al repositorio.

Para añadir los cambios que están en espera al repositorio escribes git commit -m ‘Mensaje que explique la función del commit’, con el flag -m pasa un mensaje entre comillas que entregue detalles del cambio añadido, el commit crea puntos de control en la línea de tiempo de tu repositorio.

Para utilizar un solo comado y realizar el git add + git commit puedes utilizar el flag -a, de la siguiente manera git commit -a -m ‘Mensaje que explique la función del commit’.

Si agregaste algún cambio al staging area pero quieres quitarlo de ahí puedes escribir git reset HEAD archivo.txt

Ignorar y borrar archivos

En cada proyecto hay archivos que no deseas versionar ya sea por su peso o su formato, para esto es que git te permite crear el archivo .gitignore dentro del cual debes detallar las carpetas o archivos que serán ignorados. A continuación un ejemplo.

Para borrar los cambio realizados en un archivo, en otras palabras regresar a su última versión guardada o si borraste por error un archivos que ya había sido enviado en un commit antes y quieres restaurarlo debes escribir en la línea de comandos git checkout archivo.txt, entonces git lo regresará a su última versión.

Si lo que quieres es borrar un archivo del repositorio debes ejecutar el comando git rm archivo.txt, en el próximo commit el archivo será removido.

Usando ramas

Con el comando git log puedes ver el historial de commits enviados al repositorio con los datos del usuario que los realizó, un ID único y el comentario de referencia que explica su función. Si lo que deseas es retroceder hasta una versión ‘x’, solo debes escribir en la terminal el siguiente comando git checkout IdCommit donde IdCommit son los primeros 7 caracteres del ID proporcionado en el log. Para crear una rama de desarrollo desde ese punto o desde donde te encuentras debes ejecutar git checkout -b NombreRama

Ahora te encuentras en otra rama, puedes crear cuantas quieras y pasa saber sus nombre y navegar luego entre ellas es que puedes ejecutar git branch

Es importante mencionar que la rama troncal tiene por nombre master. Si lo que necesitas es regresar de una rama a master o simplemente moverte de una rama a otra ejecutas git checkout NombreRama

Para subir tu rama local al repositorio remoto (en el cual la rama no esta creada), ejecutas git push origin NombreRama, este comando se utiliza con más frecuencia para subir los cambios realizados en el repositorio local, luego darles commit, hacia el repositorio remoto. Para traer los cambios que otro integrante del equipo subió en una rama a tu repositorio local ejecutas git pull origin NombreRama, puedes traer cambios tu misma rama en su version remota o de otra rama con la cual quieras actualizar la tuya.

En el caso de querer borrar una rama, ejecutas git branch -D NombreRama forzando el borrado de una rama sin haber ejecutado antes un merge. Para fusionar dos ramas o hacer un merge, debes estar sobre la rama que quieres que permanezca (ej: hacer un merge de un feature a la rama develop) y ejecutas el comando git merge NombreRama donde NombreRama el nombre de la rama que queremos integrar. Luego podemos si lo deseas, puedes borrar la rama ejecutando git branch -d NombreRama

Repositorio remoto

GitHub es una de la posibilidades que tienes para crear tu repositorio de forma remota. Para ello debes crear un repositorio, darle un nombre y si quieres escribes una descripción. El comando que te permite asociar tu repositorio local (previamente inicializado) con el remoto es: git remote add origin https://github.com/nombre-usuario/nombre-repositorio.git luego para subir el repositorio local ejecutas git push -u origin master, origin master es como se nombra a este repositorio remoto.

Si lo que deseas es descargar tu repositorio en otro equipo puedes clonar tu repositorio remoto con el comando: git clone https://github.com/nombre-usuario/nombre-repositorio.git

Por último ya que alguien más del equipo de desarrollo pudo haber subido algún cambio, para no estar trabajando en una versión desactualizada debes bajar la última actualización de tu repositorio remoto a tu local, esto se hace con git pull origin master. Pull trae los cambio y push los envía.

Resumen de comandos git

comando función
git init inicializa un repositorio
git add agrega cambios a staging area
git status muestra el estado de los cambios
git reset HEAD elimina un cambio del staging area
git commit envía un cambio del staging al repositorio
git rm borra cambio del repositorio
git checkout trae la última versión del cambio, crea y cambia de rama
git branch muestra las ramas
git merge fusiona las ramas
git remote add origin relacionar repo local a un repo remoto
git clone clonar repositorio remoto
git pull trae la última versión del repo remoto
git push envía los cambio al repo remoto

Resumen comandos consola

comando función
pwd (unix) - cd (windows) muestra el directorio actual
cd + directorio cambio de directorio
ls (unix) - dir (windows) listar archivos del directorio
cd .. sube un directorio

Referencias