apuntes Git.png

Diferencias entre la estructura de archivos de Windows, Mac o Linux.

  • La ruta principal en Windows es C:\, en UNIX es solo /.
  • Windows no hace diferencia entre mayúsculas y minúsculas pero UNIX sí.

Recuerda que GitBash usa la ruta /c para dirigirse a C:\ (o /d para dirigirse a D:\) en Windows. Por lo tanto, la ruta del usuario con el que estás trabajando es /c/Users/Nombre de tu usuario

Comandos básicos en la terminal:

  • pwd: Nos muestra la ruta de carpetas en la que te encuentras ahora mismo.

  • mkdir: Nos permite crear carpetas (por ejemplo, mkdir Carpeta-Importante).

  • touch: Nos permite crear archivos (por ejemplo, touch archivo.txt).

  • rm: Nos permite borrar un archivo o carpeta (por ejemplo, rm archivo.txt). Mucho cuidado con este comando, puedes borrar todo tu disco duro.

  • cat: Ver el contenido de un archivo (por ejemplo, cat nombre-archivo.txt).

  • ls: Nos permite ver los archivos de la carpeta donde estamos ahora mismo. Podemos usar uno o más argumentos para ver más información sobre estos archivos (los argumentos pueden ser -- + el nombre del argumento o - + una sola letra o shortcut por cada argumento).

    • ls -a: Mostrar todos los archivos, incluso los ocultos.
    • ls -l: Ver todos los archivos como una lista.
  • **cd**: (change directory) Nos permite navegar entre carpetas.

    • cd /: Ir a la ruta principal:
    • cd ~: Ir a la ruta de tu usuario
    • cd carpeta/subcarpeta: Navegar a una ruta dentro de la carpeta donde estamos ahora mismo.
    • cd .. (cd + dos puntos): Regresar una carpeta hacia atrás.
    • Si quieres referirte al directorio en el que te encuentras ahora mismo puedes usar cd . (cd + un punto).
  • history: Ver los últimos comandos que ejecutamos y un número especial con el que podemos repetir su ejecución.

  • ! + número: Ejecutar algún comando con el número que nos muestra el comando history (por ejemplo, !72).

  • **clear**: Para limpiar la terminal. También podemos usar los atajos de teclado Ctrl + L o Command + L.

Todos estos comandos tiene una función de autocompletado, o sea, puedes escribir la primera parte y presionar la tecla Tab para que la terminal nos muestre todas las posibles carpetas o comandos que podemos ejecutar. Si presionas la tecla Arriba puedes ver el último comando que ejecutamos.

Recuerda que podemos descubrir todos los argumentos de un comando con el argumento --help (por ejemplo, cat --help).

Empezar Git

Si a la terminal (almenys a Git Bash) escrius code, se t’obre VSCode automàticament.

Link to original

Ejecutar el comando:

git init

Recuerda que al ejecutar este comando (y de aquí en adelante) vamos a tener una nueva carpeta oculta llamada .git con toda la base de datos con cambios atómicos en nuestro proyecto.

Recuerda que Git está optimizado para trabajar en equipo, por lo tanto, debemos darle un poco de información sobre nosotros. No debemos hacerlo todas las veces que ejecutamos un comando, basta con ejecutar solo una sola vez los siguientes comandos con tu información:

git config --global user.email "tu@email.com"
git config --global user.name "Tu Nombre"

Existen muchas otras configuraciones de Git que puedes encontrar ejecutando el comando

git config --list

(o solo git config para ver una explicación más detallada).

Comandos para iniciar tu repositorio con Git

Si por algún motivo te equivocaste en el nombre o email que configuraste al principio, lo puedes modificar de la siguiente manera: git config —global —replace-all user.name “Aquí va tu nombre modificado” O si lo deseas eliminar y añadir uno nuevo git config —global —unset-all user.name :Elimina el nombre del usuario git config —global —add user.name “Aquí va tu nombre”

Analizar cambios en los archivos de tu proyecto con Git

Comandos para analizar cambios en GIT:

  • git init: inicializar el repositorio

  • git add nombre_de_archivo.extensión: agregar el archivo al repositorio

  • git add .: Agregar los cambios de la carpeta en la que nos encontramos, agregar todo

  • git rm —cached archivo.extensión: se utiliza para devolver el archivo que se tiene en ram. Cuando escribimos git add, lo devuelve a estado natural mientras está en staging.

  • git commit -m “Mensaje”: Agregamos los cambios para el repositorio

  • git status: visualizar cambios

  • git log nombre_de_archivos.extensión: histórico de cambios con detalles

  • git checkout: traer cambios realizados

  • git diff codigocommit codigocommit: ver las diferencias entre commits concretos.

git diff 8d2e88f665d435b003a9dbe84decf5e0b676672c 3250514b25e6808455b4c70b8c5396165c7d8f30
  • git push: envía a otro repositorio remoto lo que estamos haciendo

  • git pull: traer repositorio remoto

  • git config —list: muestra la lista de configuración de git

  • git config —list —show-origin: rutas de acceso a la configuración de git

Ciclo de trabajo en Git

  • Archivos Tracked: son los archivos que viven dentro de Git, no tienen cambios pendientes y sus últimas actualizaciones han sido guardadas en el repositorio gracias a los comandos git add y git commit.
  • Archivos Staged: son archivos en Staging. Viven dentro de Git y hay registro de ellos porque han sido afectados por el comando git add, aunque no sus últimos cambios. Git ya sabe de la existencia de estos últimos cambios, pero todavía no han sido guardados definitivamente en el repositorio porque falta ejecutar el comando git commit.
  • Archivos Unstaged: entiéndelos como archivos “Tracked pero Unstaged”. Son archivos que viven dentro de Git pero no han sido afectados por el comando git add ni mucho menos por git commit. Git tiene un registro de estos archivos, pero está desactualizado, sus últimas versiones solo están guardadas en el disco duro.
  • Archivos Untracked: son archivos que NO viven dentro de Git, solo en el disco duro. Nunca han sido afectados por git add, así que Git no tiene registros de su existencia.
    Recuerda que hay un caso muy raro donde los archivos tienen dos estados al mismo tiempo: staged y untracked. Esto pasa cuando guardas los cambios de un archivo en el área de Staging (con el comando git add), pero antes de hacer commit para guardar los cambios en el repositorio haces nuevos cambios que todavía no han sido guardados en el área de Staging (en realidad, todo sigue funcionando igual pero es un poco divertido).

Comandos para mover archivos entre los estados de Git:

  • git status: nos permite ver el estado de todos nuestros archivos y carpetas.
  • git add: nos ayuda a mover archivos del Untracked o Unstaged al estado Staged. Podemos usar git nombre-del-archivo-o-carpeta para añadir archivos y carpetas individuales o git add -A para mover todos los archivos de nuestro proyecto (tanto Untrackeds como unstageds).
  • git reset HEAD: nos ayuda a sacar archivos del estado Staged para devolverlos a su estado anterior. Si los archivos venían de Unstaged, vuelven allí. Y lo mismo se venían de Untracked.
  • git commit: nos ayuda a mover archivos de Unstaged a Tracked. Esta es una ocasión especial, los archivos han sido guardados o actualizados en el repositorio. Git nos pedirá que dejemos un mensaje para recordar los cambios que hicimos y podemos usar el argumento -m para escribirlo (git commit -m "mensaje").
  • git rm: este comando necesita alguno de los siguientes argumentos para poder ejecutarse correctamente:
    git rm --cached: Mueve los archivos que le indiquemos al estado Untracked.
    git rm --force: Elimina los archivos de Git y del disco duro. Git guarda el registro de la existencia de los archivos, por lo que podremos recuperarlos si es necesario (pero debemos usar comandos más avanzados).

El comando git checkout + ID del commit nos permite viajar en el tiempo. Podemos volver a cualquier versión anterior de un archivo específico o incluso del proyecto entero. Esta también es la forma de crear ramas y movernos entre ellas.

También hay una forma de hacerlo un poco más “ruda”: usando el comando git reset. En este caso, no solo “volvemos en el tiempo”, sino que borramos los cambios que hicimos después de este commit.

Hay dos formas de usar git reset: con el argumento --hard, borrando toda la información que tengamos en el área de staging (y perdiendo todo para siempre). O, un poco más seguro, con el argumento --soft, que mantiene allí los archivos del área de staging para que podamos aplicar nuestros últimos cambios pero desde un commit anterior.

Cómo usar Git Reset

Para volver a commits previos, borrando los cambios realizados desde ese commit, podemos utilizar:

  • git reset —soft [SHA 1]: elimina los cambios hasta el staging area
  • git reset —mixed [SHA 1]: elimina los cambios hasta el working area
  • git reset —hard [SHA 1]: regresa hasta el commit del [SHA-1]
    • Donde el SHA-1 es el identificador del commit