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 usar
stashpara 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-featureOtras extensiones