¿Has estado usando Git por algún tiempo pero nunca en un ambiente de equipo? Estás familiarizado con los fundamentos de Git pero no estoy seguro de cómo los equipos grandes usan Git en el trabajo?
En esta publicación, hablaré sobre las técnicas básicas de Git con las que debes estar familiarizado antes de unirte a un equipo. Los he enumerado en un orden que lógicamente seguirías para contribuir a un repositorio, ya que la importancia de cada paso es primordial. Pasemos ahora a la lista.
1. Clonación: Comenzando en un equipo
Si ha utilizado Git para proyectos personales, es posible que solo haya inicializado un proyecto desde cero y lo haya agregado con el tiempo. Cuando trabaja en una base de código existente, el primer paso es clonar la base de código en su sistema local. Esto le permite trabajar en su copia del repositorio sin ninguna interferencia de otros cambios.
Para clonar un repositorio, ejecute el git clone
comando, seguido de la ruta al repositorio:
git clone /path/to/repo
Si su fuente no reside en el mismo sistema, puede enviar SSH a un sistema remoto y clonar también:
git clone username@remote_system_ip:/path/to/repo/on/remote
Si está clonando desde una fuente en Internet, simplemente puede agregar la URL:
git clone https://github.com/sdaityari/my_git_project.git
Cada vez que clonas un repositorio, tienes la elección de múltiples protocolos para conectarse a la fuente. En el ejemplo de GitHub anterior, he usado el https
protocolo.
2. Gestión de controles remotos en Git
Una vez que haya clonado su repositorio, aún mantiene un puntero a la fuente. Este puntero es un ejemplo de un control remoto en Git. Un control remoto es un puntero a otra copia del mismo repositorio. Cuando clonas un repositorio, un puntero origin
se crea automáticamente y apunta a la fuente.
Puede consultar una lista de controles remotos en un repositorio ejecutando el siguiente comando:
git remove -v
Para agregar un control remoto, puede usar el git remote add
mando:
git remote add remote_name remote_address
Puede eliminar un control remoto utilizando el git remote remove
mando:
git remote remove remote_name
Si desea cambiar la dirección de un control remoto, puede usar el set-url
mando:
git remote set-url remote_name new_remote_address
3. Ramificación en Git
La mayor ventaja de Git sobre otros sistemas de control de versiones es el poder de sus sucursales. Antes de saltar a lo esencial de la ramificación, te estarás preguntando que rama es. Una rama es un puntero a una confirmación en su repositorio, que a su vez apunta a su predecesor. Por lo tanto, una rama representa una lista de confirmaciones en orden cronológico. Cuando crea una rama, efectivamente crea solo un nuevo puntero a una confirmación. Sin embargo, en esencia, representa un nuevo camino de desarrollo independiente.
Si ha estado trabajando en su propio proyecto, es posible que nunca haya utilizado ramas de manera consciente. Por defecto, Git usa el master
rama para el desarrollo. Cualquier nueva confirmación se agrega a esta rama.
La ramificación es necesaria para que Git bifurque líneas de trabajo en un proyecto. Al mismo tiempo, puede haber muchos desarrolladores que están trabajando en una variedad de problemas diferentes. Idealmente, estos problemas se trabajan en diferentes ramas para garantizar la separación lógica del nuevo código hasta la revisión y fusión del código.
Para verificar una lista de ramas y la rama activa actual, ejecute el siguiente comando:
git branch
Para crear una nueva rama, ejecute el siguiente comando:
git branch new_branch
Aunque Git crea una nueva rama, tenga en cuenta que su rama activa sigue siendo la anterior. Para comenzar el desarrollo en una nueva sucursal, ejecute lo siguiente:
git checkout new_branch
Para crear una nueva rama y cambiar la rama activa, ejecute el siguiente comando:
git checkout -b new_branch
Para cambiar el nombre de la rama actual, ejecute el siguiente comando:
git branch -m new_renamed_branch
Ingrese al -D
opción para eliminar una rama:
git branch -D new_renamed_branch
Aquí hay una guía detallada sobre ramificación en Git.
4. Actualice su repositorio local: fusión
Si bien hemos comprobado los conceptos básicos de ramificación en Git, el siguiente paso lógico es fusionar una rama en su rama base cuando haya terminado de trabajar en un problema. Para fusionar una rama, ejecute el siguiente comando:
git checkout base_branch
git merge new_branch
Si bien puede parecer un proceso fácil, la fusión es potencialmente el proceso que consume más tiempo en Git, ya que puede generar conflictos.
5. Manejar conflictos
Imagine que está trabajando en un archivo en una nueva sucursal. Después de confirmar los cambios, solicita a Git que combine su nueva sucursal con su sucursal base. Sin embargo, la misma parte del mismo archivo en la rama base se ha actualizado desde que creó la nueva rama. ¿Cómo decide Git qué cambios mantener y qué cambios descartar?
Git siempre intenta no perder ningún dato en el proceso de fusión. Si los cambios en el mismo archivo se realizaron en diferentes partes del archivo, podría escapar manteniendo ambos conjuntos de cambios. Sin embargo, si Git no puede decidir qué cambios mantener, genera un conflicto.
Cuando se ha planteado un conflicto, se ejecuta git status
en su repositorio muestra una lista de archivos que se modificaron en ambas ramas que se fusionan. Si abre cualquier archivo con un conflicto, notará el siguiente conjunto de líneas:
<<<<<<<< HEAD
...
...
========
...
...
>>>>>>>> new_branch
La parte del archivo entre <<<<<<<< HEAD
y ========
contiene ese código que está presente en la rama base. Las líneas de código entre ========
y >>>>>>>> new_branch
están presentes en el new_branch
rama. El desarrollador que está fusionando el código tiene la responsabilidad de decidir qué parte del código (o una combinación de ambas partes) debe incluirse en la fusión. Una vez editado, elimine los tres conjuntos de líneas que se muestran, guarde el archivo y confirme los cambios.
6. Sincronice los cambios con el control remoto
Si bien hemos discutido cómo confirmar el código en nuevas sucursales y fusionarlo con la rama base, veamos ahora cómo puede sincronizar el código con el control remoto. Antes de poder publicar sus cambios en el control remoto, debe actualizar su copia local del repositorio para tener en cuenta los cambios que puedan haber ocurrido desde su última actualización. Para actualizar los cambios desde el control remoto, ejecute el siguiente comando:
git pull remote remote_branch:local_branch
La git pull
El comando primero descarga los datos del control remoto y luego se fusiona con la rama local como se especifica en el comando. También pueden surgir conflictos al extraer cambios desde un control remoto. En tal caso, la última línea en un archivo de conflicto contendría >>>>>>>> commit_hash
en lugar de >>>>>>>> new_branch
, Donde commit_hash
sería el hash de identificación para la confirmación que se agrega a su rama.
Para publicar cambios en el control remoto después de fusionarse con el último código del control remoto, use el git push
mando:
git push remote local_branch:remote_branch
7. Git en la nube: bifurcación
Si su equipo trabaja en la nube, se le presenta un concepto adicional llamado fork. Una bifurcación es una copia del repositorio central de la nube bajo su nombre de usuario. Tiene acceso de escritura a su bifurcación, que es un lugar seguro para impulsar los cambios sin afectar el repositorio original.
Esto afecta el mismo paso técnico que cubrí anteriormente. Clonas tu tenedor, entonces el origin
de su repositorio local apunta a su bifurcación en la nube. ¿Cómo se obtienen las actualizaciones del último repositorio? Necesita agregar manualmente un control remoto, upstream
, que apunta al repositorio original.
Si bien puede publicar fácilmente los cambios en su bifurcación, ¿cómo consigue que se acepte un nuevo código en el repositorio original? Eso nos lleva al siguiente paso.
8. Revisiones de código a través de solicitudes de extracción
Una solicitud de extracción es una solicitud para fusionar código de una rama a otra. Es un concepto que se ha desarrollado desde que los servicios en la nube para Git se hicieron populares. Una solicitud de extracción resume la comparación entre las dos ramas en cuestión e inicia una discusión entre el desarrollador y los administradores de la organización.
Una revisión del código puede culminar en más cambios antes de que pueda fusionarse. Cuando los administradores están satisfechos con los cambios, se pueden combinar con el repositorio.
9. Conozca los flujos de trabajo de Git
Cuando trabajas solo en un solo proyecto, probablemente estés usando solo una rama. Sin saberlo, se está adhiriendo al flujo de trabajo centralizado o troncal, donde todos los cambios se realizan en una sola rama.
El siguiente flujo de trabajo más complejo es el flujo de trabajo de la rama de características, donde se atribuye una sola rama a cada característica o corrección de errores. Ningún desarrollo ocurre directamente en el master
or development
.
Un flujo de trabajo de Git que abarca una amplia gama de situaciones es el flujo de trabajo de Gitflow. Tiene ramas separadas para desarrollo, características, lanzamientos y revisiones.
Aquí hay una guía detallada sobre Flujos de trabajo de Git.
10. Manejar archivos grandes: Git LFS
Si bien Git hace un gran trabajo al manejar archivos de texto, no puede rastrear cambios en archivos binarios y ejecutables. Si bien puede agregar dichos archivos a Git, podría generar un gran tamaño de repositorio con un aumento en el número de confirmaciones.
La solución es usar Almacenamiento de archivos grandes de Git, que maneja archivos binarios grandes a través de Git. Esta herramienta almacena estos archivos en la nube y los reemplaza con punteros de texto. Aquí hay una implementación de usando Git LFS para rastrear archivos de diseño de Photoshop.
OTRAS LECTURAS
En esta publicación, he hablado sobre varias técnicas de Git que pueden ayudarte cuando te unes a un equipo por primera vez. Espero que te haya ayudado en tu preparación para el futuro. ¿Me perdí algo? Déjame saber en Twitter!
Para una comprensión más profunda de Git, consulte estos recursos:
- Saltar Inicio Git: Una guía concisa que lo pondrá al día en un solo fin de semana.
- Git profesional: Una inmersión más profunda que te llevará por el camino hacia el dominio de Git.
Fuente: https://www.sitepoint.com/git-techniques-to-know-before-you-join-a-team/?utm_source=rss