Comandos Git para el día a día
Tags: git
Published: 2023-08-17 16:21:12

Es un sistema de control de versiones, nos ayuda a guardar el historial de cambios de un archivo.

**Comandos básicos útiles:**

```
$ git init
```

Es el comando que utilizamos para iniciar un repositorio en un proyecto nuevo.


```
$ git add .
```

Es el comando que usamos para que Git conozca la existencia de los archivos de nuestro proyecto. Este comando no guarda las modificaciones o actualizaciones a los archivos de forma automática, únicamente los guarda en una zona conocida como Staging Area (Área de montaje o ensayo).

```
$ git commit
```
Es el comando que utilizamos para guardar de forma definitiva una actualización o modificación a los archivos. Es posible utilizar el flag -m y seguido entre comillas podemos dejar un mensaje para recordarnos qué cambios estamos guardando.

```
$ git commit -m "descripción del commit"
```
Confirma los cambios y los guarda en el repositorio.

```
$ git commit -am "descripción del commit"
```
Añade los cambios al staging área y confirma los cambios y los guarda en el repositorio.

```
$ git pull
```
Para descargar los cambios de un branch.

```
$ git push 
```
Este comando se usa cuando queremos enviar nuestros cambios en el repositorio hacia un servidor en la nube.

```
$ git status
```
Ofrece una descripción del estado de los archivos (untracked, ready to commit, nothing to commit).

```
$ git config --global user.email mail@mail.com
```
Configura un email.

```
$ git config --global user.name <Nombre como que se verá en los commits>
```
Configura un nombre.

```
$ git config --list --show-origin
```
Podemos revisar donde se guardan las configuraciones de Git en nuestro pc.

```
$ git config --list
```
Listara las configuraciones de Git.

**Comandos para analizar cambios en los archivos de un proyecto**

```
$ git log
```
Nos genera una lista de manera descendente los commits realizados.

```
$ git log -stat
```
Además de listar los commits, muestra la cantidad de bytes añadidos y eliminados en cada uno de los archivos modificados.

```
$ git log --all -graph -decorate -online
```
Muestra de manera comprimida toda la historia del repositorio de manera gráfica y embellecida.

```
$ git show <filename>
```
Permite ver la historia de los cambios en un archivo.

```
$ git diff <commit> <commit 2>
```
Compara diferencias entre cambios confirmados.


**Volver en el tiempo con branches y checkout**

```
$ git reset <commit> - soft/hard
```
Regresa al commit especificado, eliminando todos los cambios que se hicieron después de ese commit.

```
$ git checkout <commit/branch> <filename>
```
Permite regresar al estado en el cual se realizó un commit o un branch especificado, pero no elimina lo que esta en el staging área.

```
$ git checkout - <filePath>
```
Deshace cambios en una archivo en estado modified (que ni fue agregado al staging)


**Comandos para eliminar**

```
$ git rm
```
Este comando nos permite eliminar archivos de Git sin eliminar su historial del sistema de versiones. Esto quiere decir que si volvemos a necesitarlo podemos "viajar en el tiempo" y recuperarlo del último commit antes de borrarlo. git rm no puede usarse por sí solo, se debe utilizar uno de los flags para indicar a Git como eliminar los archivos.

```
$ git rm -cached <archivo/s>
```
Elimina los archivos del área de staging y del próximo commit, pero los mantiene en nuestro disco duro.

```
$ git rm -force <archivo/s>
```
Elimina los archivos de Git y del disco duro. Git siempre guarda todo, por lo que podemos acceder al registro de la existencia de los archivos, de modo que podremos recuperarlos si es necesario. ( pero debemos aplicar comandos más avanzados).

```
$ git reset
```
Con este comando volvemos al pasado sin la posibilidad de volver al futuro. Borramos la historia y la debemos sobreescribir.

```
$ git reset -soft
```
Vuelve el branch al estado del commit especificado, manteniendo los archivos en el directorio de trabajo y lo que haya en staging considerando todo como nuevos cambios. Así podemos aplicar las últimas actualizaciones a un nuevo commit.

```
$ git reset -hard
```
Borra absolutamente todo. Toda la información de los commits y del área de staging se borra del historial.

```
$ git reset HEAD
```
No borra los archivos ni sus modificaciones, solo los saca del área de staging, de forma que los últimos cambios de estos archivos no se envíen al último commit. Si se cambia de opinión se los puede incluir nuevamente con git add.

**Comandos para ramas o branch**

Al crear una nueva rama se copia el último commit en esta nueva rama. Todos los cambios realizados en esta nueva rama no se reflejarán en la rama master hasta que hagamos un merge.

```
$ git branch <new branch>
```
Crea una nueva rama

```
$ git checkout <branch name>
```
Se mueve a la rama especificada.

```
$ git merge <branch name>
```
Fusiona la rama actual con la rama 
especificada y produce un nuevo commit de esta fusión.

```
$ git branch
```
Lista las ramas generadas.