Ir al contenido
Apuntes de GIT

Apuntes de GIT

·816 palabras·4 mins

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.
  • 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
#

  1. Creamos un directorio de trabajo donde están nuestros archivos.
  2. git init para crear nuestro staging (área de preparación) y repositorio local.
  3. Agregamos archivos al área de staging con git add nombre-archivo o git add ..
  4. 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 es git fetch y git 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 un merge completo.
  • git commit --amend: se utiliza para agregar archivos nuevos o actualizar el commit anterior y no generar commits innecesarios.