Skip to main content

Git

[https://rogerdudler.github.io/git-guide/index.es.html](Pequeño manual de git)

Git es un sistema de control de versiones distribuido ampliamente utilizado para el seguimiento de cambios en archivos de código fuente durante el desarrollo de software. Esencialmente, Git permite a los desarrolladores colaborar en proyectos de software al mantener un registro de todos los cambios realizados en el código, lo que facilita la colaboración entre equipos de desarrollo y ayuda a mantener un historial completo de las modificaciones realizadas en un proyecto.

Aquí hay algunos conceptos clave asociados con Git:

  1. Repositorio: Un repositorio Git es un almacenamiento de archivos de código fuente y su historial de cambios asociado. Puede ser local (en la máquina de un desarrollador) o remoto (alojado en un servidor Git).

  2. Commit: Un commit es un conjunto de cambios realizados en el código fuente que se guarda en el repositorio. Cada commit tiene un mensaje que describe los cambios realizados.

  3. Branch (rama): Una rama es una línea de desarrollo independiente en el repositorio. Los desarrolladores pueden trabajar en diferentes ramas para implementar nuevas características o solucionar problemas sin afectar la rama principal del proyecto (generalmente llamada "master" o "main").

  4. Merge (fusionar): Fusionar es el proceso de combinar los cambios de una rama en otra, generalmente para incorporar nuevas características o correcciones de errores en la rama principal del proyecto.

  5. Pull request (solicitud de extracción): En entornos de desarrollo colaborativo, como GitHub, una solicitud de extracción es una forma de solicitar que los cambios realizados en una rama de código se fusionen con otra rama. Esto facilita la revisión y la colaboración entre los miembros del equipo.

  6. Clonar: Clonar un repositorio Git significa copiar todo el historial de cambios y archivos del repositorio remoto en la máquina local de un desarrollador.

Git es muy flexible y potente, y se utiliza en una amplia variedad de proyectos de desarrollo de software, desde pequeños proyectos individuales hasta grandes proyectos de código abierto con contribuciones de múltiples desarrolladores en todo el mundo.

Aquí tienes una guía básica de los comandos más comunes de Git:

Configuración inicial

  • git config --global user.name "Tu Nombre": Configura el nombre de usuario.
  • git config --global user.email "tu@email.com": Configura la dirección de correo electrónico.
  • git config --global core.editor "editor": Configura el editor de texto preferido.

Crear y clonar repositorios

  • git init: Inicia un nuevo repositorio Git en el directorio actual.
  • git clone <URL del repositorio>: Clona un repositorio remoto en tu máquina local.

Trabajo básico con cambios

  • git status: Muestra el estado actual de los archivos en el directorio de trabajo y el área de preparación.
  • git add <archivo>: Agrega cambios al área de preparación.
  • git commit -m "Mensaje del commit": Guarda los cambios en el repositorio con un mensaje descriptivo.
  • git commit -am "Mensaje del commit": Agrega todos los archivos modificados y guarda los cambios en un solo comando.

Ramas (Branches)

  • git branch: Muestra las ramas locales.
  • git branch <nombre>: Crea una nueva rama.
  • git checkout <nombre>: Cambia a una rama existente.
  • git checkout -b <nombre>: Crea y cambia a una nueva rama en un solo comando.
  • git merge <rama>: Fusiona una rama con la rama actual.

Trabajo con remotos

  • git remote add <nombre> <URL>: Agrega un repositorio remoto.
  • git remote -v: Muestra los repositorios remotos configurados.
  • git push <nombre-remoto> <rama-local>: Envía cambios locales a un repositorio remoto.
  • git pull <nombre-remoto> <rama-remota>: Obtiene cambios desde un repositorio remoto y los fusiona con la rama local.

Historial y cambios

  • git log: Muestra el historial de commits.
  • git diff: Muestra las diferencias entre los cambios en el área de trabajo y el área de preparación.
  • git diff <commit1> <commit2>: Muestra las diferencias entre dos commits.
  • git blame <archivo>: Muestra quién modificó cada línea de un archivo y en qué commit.

Deshacer cambios

  • git reset <archivo>: Quita un archivo del área de preparación.
  • git checkout -- <archivo>: Descarta los cambios no guardados en un archivo.
  • git revert <commit>: Deshace un commit específico revirtiendo los cambios introducidos.

Por supuesto, aquí tienes una guía más amplia que cubre una gama más completa de comandos y funcionalidades de Git:

Configuración inicial

  • git config --global user.name "Tu Nombre": Configura el nombre de usuario.
  • git config --global user.email "tu@email.com": Configura la dirección de correo electrónico.
  • git config --global core.editor "editor": Configura el editor de texto preferido.
  • git config --global --unset <clave>: Elimina una configuración global específica.

Crear y clonar repositorios

  • git init: Inicia un nuevo repositorio Git en el directorio actual.
  • git clone <URL del repositorio>: Clona un repositorio remoto en tu máquina local.

Trabajo básico con cambios

  • git status: Muestra el estado actual de los archivos en el directorio de trabajo y el área de preparación.
  • git add <archivo>: Agrega cambios al área de preparación.
  • git add .: Agrega todos los cambios al área de preparación.
  • git commit -m "Mensaje del commit": Guarda los cambios en el repositorio con un mensaje descriptivo.
  • git commit -am "Mensaje del commit": Agrega todos los archivos modificados y guarda los cambios en un solo comando.
  • git reset <archivo>: Quita un archivo del área de preparación.
  • git checkout -- <archivo>: Descarta los cambios no guardados en un archivo.

Ramas (Branches)

  • git branch: Muestra las ramas locales.
  • git branch <nombre>: Crea una nueva rama.
  • git branch -d <nombre>: Elimina una rama.
  • git branch -m <nombre-nuevo>: Renombra la rama actual.
  • git checkout <nombre>: Cambia a una rama existente.
  • git checkout -b <nombre>: Crea y cambia a una nueva rama en un solo comando.
  • git merge <rama>: Fusiona una rama con la rama actual.
  • git merge --abort: Aborta una fusión en caso de conflicto.

Trabajo con remotos

  • git remote add <nombre> <URL>: Agrega un repositorio remoto.
  • git remote -v: Muestra los repositorios remotos configurados.
  • git push <nombre-remoto> <rama-local>: Envía cambios locales a un repositorio remoto.
  • git push -u <nombre-remoto> <rama-local>: Establece una relación de seguimiento entre una rama local y una rama remota.
  • git pull <nombre-remoto> <rama-remota>: Obtiene cambios desde un repositorio remoto y los fusiona con la rama local.
  • git fetch <nombre-remoto>: Obtiene cambios desde un repositorio remoto pero no los fusiona automáticamente.

Historial y cambios

  • git log: Muestra el historial de commits.
  • git log --oneline --graph --decorate --all: Muestra el historial de commits de forma compacta y con gráficos.
  • git diff: Muestra las diferencias entre los cambios en el área de trabajo y el área de preparación.
  • git diff <commit1> <commit2>: Muestra las diferencias entre dos commits.
  • git blame <archivo>: Muestra quién modificó cada línea de un archivo y en qué commit.
  • git show <commit>: Muestra los cambios introducidos por un commit específico.

Etiquetado (Tagging)

  • git tag: Muestra los tags existentes.
  • git tag <nombre>: Crea un nuevo tag ligero en el HEAD actual.
  • git tag -a <nombre> -m "Mensaje del tag": Crea un nuevo tag anotado con un mensaje.
  • git push --tags: Envía todos los tags al repositorio remoto.

Deshacer cambios

  • git reset <commit>: Deshace los commits hasta un commit específico.
  • git revert <commit>: Deshace un commit específico revirtiendo los cambios introducidos.
  • git checkout <commit> <archivo>: Restaura un archivo específico de un commit anterior.
  • git reset --hard: Resetea al último commit eliminando todos los cambios locales (¡cuidado, es destructivo!).