Skip to content

Curso de GIT

Updated: at 12:00

Table of contents

Open Table of contents

Curso de GIT

Introducción a GIT

Es un sistema de control de versiones distribuido, que permite llevar un control de los cambios en los archivos de un proyecto.

El pilar de GIT es el repositorio, que es una carpeta que almacena los archivos de un proyecto y su historial de cambios.

Cada repositorio tiene al menos una rama principal, que es una línea de tiempo de los cambios en los archivos.

Estados en GIT

Imagen de Union automatica

Configuración y ayuda

Ver la versión de git

git --version

Ver la version de git, con un - podemos utilizar la abreviatura de los comandos.

git -v

Definimos el nombre

git config --global user.name "Nombre"

Definimos el email

git config --global user.email "email"

Definir nombre de la rama principal por defecto a main

git config --global init.defaultBranch main

Listamos la configuración de git

git config --global -l

Editamos la configuración de git

git config --globar -e

Muestra la configuración de git en el sistema, local y global.

git config -l --show-scope

Muestra la ayuda de git

git help

Muestra la ayuda de un comando en específico

git help config

Primeros comandos

Inicializa un repositorio y crea la carpeta .git

git init

Muestra el estado del repositorio

git status

Muestra el estado del repositorio de forma resumida

git status -s

Trabajando con el seguimiento de archivos.

Agrega archivos al stage

git add <nombre_archivo>

Agrega todos los archivos al stage

git add .

Agrega archivos al stage con un comodín

git add *.html

Quita un archivo del stage

git reset <nombre_archivo>

Guarda los archivos en el repositorio, tienen que estar en el stage.

git commit -m "Mensaje"

Por defecto git no hace seguimiento a carpetas vacias, para que lo haga se debe crear el archivo .gitkeep dentro de la carpeta y añadirlo al stage.

.gitkeep

Guarda todos archivos en el repositorio, siempre que esten en seguimiento.

git commit -am "Mensaje"

Modifica el último commit. Nos llevará al editor de texto desde donde podremos modificar el mensaje y ver información del commit.

git commit --amend

Modifica el mensaje del último commit.

git commit --amend -m "Mensaje"

Para sacar del stage un archivo

git reset HEAD ARCHIVO-A-UNSTAGE

Quita el ultimo commit. Detrás del HEAD^ se puede poner el número de commits que se quieren quitar. También se puede poner el hash del commit. Hay que tener en cuenta las banderas, soft mantiene los cambios en el área de preparación, mixed los quita del área de preparación pero los mantiene en el directorio de trabajo, y hard elimina los cambios tanto del área de
preparación como del directorio de trabajo.

git reset --soft HEAD^

Ver las diferencias entre archivos.

git diff

Para excluir archivos del seguimiento de git, se debe crear un archivo .gitignore y añadir los archivos que se quieren excluir.

.gitignore

Trajando con el historial.

Muestra el detalle de un commit.

git show <hash>

Muestra el historial de commits.

git log

Muestra el historial de commits de forma resumida.

git log --oneline -> Muestra el historial de commits de forma resumida.

Con el comando reflog podemos ver el historial de sucesos de git. Muy útil para saber que ha pasado en el repositorio.

git reflog

Trajando con el Stash.

El Stash es una carpeta temporal donde se almacenan los cambios que se han realizado en el repositorio, pero que no se han confirmado aún. Cuando lo lancemos todo el working directory se guardará en el Stash, y GIT nos situará en el último commit que se haya realizado. Si nos acostumbramos a trabajar en ramas cuando creemos una nueva feature, el trabajo con el Stash no se suele utilizar.

Para guardar los cambios en el Stash.

git stash

Para guardar los cambios en el Stash con un mensaje.

git stash save "Mensaje"

Para restaurar los cambios del Stash.

git stash pop

Para restaurar los cambios del Stash y no los borrar del Stash.

git stash pop --index

Para ver el Stash.

git stash list

Para ver el Stash de forma resumida.

git stash list --oneline

Para ver el Stash de forma detallada.

git stash list --verbose

Para ver el Stash de forma resumida y detallada.

git stash list --oneline --verbose

Trabajando con ramas.

Tenemos que tener en cuenta posibles tipos de union (Merge) que tenemos en GIT.

Imagen de Union automatica Imagen de Union automatica

Imagen de Fast-Forward Imagen de Fast-Forward

Para cambiar de rama.

git switch <nombre_rama>

Para crear una rama.

git branch <nombre_rama>

Para cambiar el nombre de la rama

git branch -m <nombre_rama> <nuevo_nombre>

Para crear una rama y cambiar a ella.

git switch -c <nombre_rama>
git checkout -b <nombre_rama>

Para ver las ramas.

git branch

Para ver las ramas de forma verbosa.

git branch -v

Para ver todas las ramas, locales y remotas.

git branch -a

Para ver todas las ramas remotas.

git branch -r

Para borrar una rama.

git branch -d <nombre_rama>

Para borrar una rama remota.

git push origin -d <nombre_rama>

Para unir las ramas. A tener en cuenta es que siempre nos pondremos en la rama de destino para realizar la union.

git merge <nombre_rama>

Ver diferencias entre ramas.

git diff <nombre_rama> <nombre_rama>

Si ponemos las rama de destino nos la compara con la rama actual.

git diff <rama_destino>

Trabajando con los repositorios remotos

Para ver los repositorios remotos.

git remote -v

Para agregar un repositorio remoto.

git remote add <nombre_repositorio> <url_repositorio>

Para subir los cambios al repositorio remoto.

git push <nombre_repositorio> <nombre_rama>

Para descargarse los últimos cambios del repositorio remoto.

git pull

Para descargarse todos los cambios del repositorio remoto y no solo los de la rama actual.

git pull -a

Para descargarse las referencias remotas (historial de commits) pero no los archivos.

git fetch

Para descargar las referencias remotas y borrar las que ya no existen en el repositorio remoto.

git fetch -p

Alias

git config --global alias.lg "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"
git config --global alias.s "status --short --branch"

SOS

Restaura el sistema de archivos al último commit

git checkout -- .