Git es un sistema de control de versiones. ¿Qué es el “control de versiones”? Es un sistema que registra los cambios en un archivo o conjunto de archivos a lo largo del tiempo para que se puedan recuperar versiones específicas más adelante. git colabora con esto.
COMANDOS BÁSICOS #
El primer paso es inicializar un nuevo repositorio de git. Se puede hacer con el comando git init
.
Este comando creará un área conocida como “Staging” (donde se guardará temporalmente nuestros archivos) y un repositorio local (base de datos histórico del proyecto).
Cuando trabajamos con git, nuestros archivos pasan por diferentes estados.
→ git status
: nos muestra en qué estado se encuentran nuestros archivos.
- archivo sin rastrear (untracked): aún no vive en git.
- estado unstaged: el archivo aún no es guardado definitivamente.
- estado staged: archivo que vive en git pero fue afectado por el comando
add
. - estado tracked: al ser afectado por
commit
es enviado al repositorio. Los cambios son definitivos.
git status
: ver el estado de nuestros archivos.
git add
: añade el archivo a Staging.
git add nombre_archivo
.git add .
: añade todos los archivos.
git commit
: guarda los archivos en el repositorio local.
git commit -m "mensaje"
.
git reset HEAD
: quita archivos de staged o los devuelve a su estado anterior.
git rm
: elimina el archivo de tu directorio de trabajo y no elimina su historial del sistema de versiones.
git rm --cached
: mueve los archivos que indiquemos al estado untracked.git rm --force
: elimina los archivos de git y del disco duro.
Ramas (branches) #
Todos los commits se aplican sobre una rama. Por defecto, comenzamos en la rama master.
Crear una rama consiste en copiar un commit de una rama determinada, pasarlo a otra rama y continuar el trabajo sin afectar el flujo de trabajo principal (rama master).
Crear una nueva rama #
El comando git branch nombre-rama
copia el último commit a esta rama.
Para migrar de una rama a otra, usamos git checkout nombre_rama
.
No olvidar hacer git commit -am
para no perder los cambios que hicimos, previo a migrar.
Fusión de ramas (merge) #
El merge (git merge
) ocurrirá donde estoy ubicado, haciendo que el último commit de esa rama sea el principal.
Si queremos agregar a master un cambio que se hizo en otra rama, nos ubicamos en ella con git checkout master
. Luego, git merge nombre_rama
(se abre un entorno para colocar un mensaje).
Si no sabemos el nombre de la rama, usando git branch
podemos ver las ramas existentes y en cuál estamos.
Más comandos #
git show
: muestra los cambios que han existido sobre un archivo.git diff
: muestra la diferencia entre una versión y otra.- Ej.:
git diff commit1 commit2
.
- Ej.:
git log
: obtenemos el ID de nuestros commits. Muestra el historial de confirmaciones del repositorio local.git checkout -b nombre-rama
: podemos crear una rama y cambiar a ella con un solo comando.git checkout IDcommit
: podemos volver a cualquier versión anterior de un archivo. También nos permite movernos entre ramas.git reset
: volvemos a versiones anteriores y además borramos todos los cambios que hicimos después de ese commit.
Hay dos formas de usar git reset
:
git reset --hard
: reestablece el árbol de trabajo y el índice. Cualquier cambio en el árbol desde el commit se descarta. Reestablece tu commit, la zona de ‘staging’ y tu directorio de trabajo.git reset --soft
: no reinicia el archivo índice ni el árbol de trabajo, sino que reinicia el HEAD para commit. Cambia todos los archivos a “Cambios a ser commited”.
git branch -d nombre-rama
: cuando hayamos terminado de trabajar con una rama y la hayamos fusionado, podemos eliminarla usando este comando.
git add remote URL
: agrega un repositorio remoto al repositorio local.
Flujo de trabajo #
- Creamos un directorio de trabajo donde están nuestros archivos.
git init
para crear nuestro staging (área de preparación) y repositorio local.- Agregamos archivos al área de staging con
git add nombre-archivo
ogit add .
. - Enviamos nuestro archivo al repositorio local con
git commit -m
.
Nuestro proyecto puede estar alojado en un servicio remoto, como GitHub, GitLab, Bitbucket, entre otros. Estos guardan nuestro proyecto y nos brindan una URL para poder acceder a él.
Para acceder a nuestro proyecto remoto, utilizamos el comando git clone URL
(reemplazando ‘URL’ por nuestro link).
Luego de hacer git add
y git commit
, debemos ejecutar git push
para mandar los cambios al servidor remoto.
Más comandos (final) #
git stash
: guarda el trabajo actual de Staging en una lista temporal (Stash) para poder recuperarlo en un futuro.git pull
: básicamente esgit fetch
ygit merge
al mismo tiempo.git clean
: limpia el proyecto de archivos no deseados.git cherry-pick
: nos permite tomar uno o varios commits de otra rama sin tener que hacer unmerge
completo.git commit --amend
: se utiliza para agregar archivos nuevos o actualizar el commit anterior y no generar commits innecesarios.