Flujo de trabajo de Git

En este capítulo presentaremos el flujo de trabajo de Git.

La siguiente imagen muestra el flujo de trabajo de Git:

Podemos imaginar el flujo de trabajo de Git como un proceso dehacer la tarea y entregársela al profesor. Basándonos en el diagrama anterior, podemos dividir este proceso en cuatro partes principales:

1. Directorio de trabajo (Working Directory) —— Tu escritorio

Este es el lugar donde túrealmente modificas los archivos. Aquí escribes código, borras y haces cambios.

  • Acción: Aquí escribiste una nueva función o corregiste un Bug.

2. Área de preparación (Staging Area) —— Tu cesta de correo por enviar

Cuando creas que la tarea está casi lista, la pones en una cesta, lista para empacar.

  • Comando clave:git add
  • Significado: Le dices a Git que confirmas estos cambios y que los registre temporalmente.

3. Repositorio local (Local Repository) —— Tu caja fuerte personal

Empacas el contenido de la cesta, le pones una etiqueta (mensaje de confirmación) y lo guardas en tu caja fuerte personal.

  • Comando clave:git commit
  • Significado: El cambio pasa a formar parte oficialmente de la historia del proyecto. Incluso si luego lo desordenas, puedes recuperarlo desde aquí en cualquier momento.

4. Repositorio remoto (Remote) —— El buzón de entrada del profesor (por ejemplo, GitHub/GitLab)

Finalmente, envías el código de tu caja fuerte al servidor remoto a través de la red, para que otros puedan verlo o colaborar.

  • Comando clave:git push
  • Significado: Haz una copia de seguridad del código y comparte el progreso con el equipo.

Explicación de conceptos

  • git stash (área de almacenamiento temporal): Tienes la tarea a medias y de repente necesitas atender otro trabajo urgente, pero no quieres confirmar la tarea incompleta. En ese caso, primero puedes usarstashpara esconder el código en un cajón y, cuando termines, sacarlo y continuar escribiendo (pop)。
  • git pull (traer): Revisa si hay nuevas tareas entregadas por otros en el profesor (repositorio remoto) y sincronízalas directamente en tu escritorio.
  • git fetch & merge: Primero observa qué actualizaciones hay en el remoto (fetch), después de confirmar que no hay problemas, fusiona (merge) en tu propio código.

Resumen breve:
Modificar el código →add(ponerlo en la cesta) →commit(guardarlo en la caja) →push(enviarlo lejos).


Explicación de comandos

1. Clonar el repositorio

Si quieres participar en un proyecto existente, primero debes clonar el repositorio remoto en tu máquina local:

git clone https://github.com/username/repo.git
cd repo

2. Crear una nueva rama

Para evitar desarrollar directamente en la rama main o master, normalmente se crea una rama nueva:

git checkout -b new-feature

3. Directorio de trabajo

En el directorio de trabajo editas el código, agregas archivos nuevos o eliminas archivos innecesarios.

4. Preparar archivos (staging)

Agrega los archivos modificados al área de preparación para poder realizar el siguiente paso de confirmación:

git add filename
# 或者添加所有修改的文件
git add .

5. Confirmar cambios

Confirma los cambios del área de preparación en el repositorio local y agrega un mensaje de confirmación:

git commit -m "Add new feature"

6. Traer los últimos cambios

Antes de enviar los cambios locales, es mejor traer los últimos cambios del repositorio remoto para evitar conflictos:

git pull origin main
# 或者如果在新的分支上工作
git pull origin new-feature

7. Enviar cambios

Envía las confirmaciones locales al repositorio remoto:

git push origin new-feature

8. Crear una Pull Request (PR)

Crea una Pull Request en GitHub u otra plataforma de alojamiento para invitar a los miembros del equipo a revisar el código. Una vez que la PR se fusione, tus cambios se integrarán en la rama principal.

9. Fusionar cambios

Después de que la PR sea aprobada y fusionada, puedes fusionar la rama principal del repositorio remoto en tu rama local:

git checkout main
git pull origin main
git merge new-feature

10. Eliminar la rama

Si ya no necesitas la rama de nueva funcionalidad, puedes eliminarla:

git branch -d new-feature

O eliminar la rama del repositorio remoto:

git push origin --delete new-feature
Otras extensiones