En este artículo, hablaré sobre cómo funciona Git Rebase, las diferencias entre Git Rebase y Git se fusionan, y cómo trabajar con Git Rebase. Entonces empecemos.
Digamos que tiene un repositorio de git con los compromisos A, B, C en el maestro rama. Entonces, creaste una nueva rama algo de rama y agregó 2 nuevas comodidades D y mi hacia algo de rama rama.
Fig. 1: Historial de confirmación inicial.
Ahora, digamos, olvidaste agregar algo en el maestro rama. Entonces, vuelves al maestro ramificarse y agregar un nuevo confirmación GRAMO hacia maestro rama. Tu historial de git debería verse de la siguiente manera.
Fig. 2: Comprometer el historial después de agregar Commit G en la rama maestra.
Todo se ve bien. Ahora, si querías todos los cambios que has hecho a la algo de rama rama para estar en el maestro rama, puedes fusionar el algo de rama rama a la maestro rama. Esto es lo que git unir hacer.
¿Qué pasa si quieres el commit GRAMO estar disponible en el algo de rama rama? Bueno, puedes usar Git Rebase para eso.
De la historia de comet en la figura 2, puedes ver que la rama algo de rama comienza desde el comet C. Si haces un Git Rebase en algo de rama, Entonces comenzaría desde el comet GRAMO Como se muestra en la figura 3 a continuación. Tenga en cuenta que el contenido de la confirmación D y mi cambiará también después de la operación de Rebase. Los compromisos D y mi incluirá los cambios en la confirmación GRAMO. Por eso agregué * símbolo antes de que se comprometan D y mi.
Si quieres saber cómo se vería la historia del comet. Lo he incluido solo para que puedas compararlo con Git Rebase.
Fig. 4: Historial de cometer si se usó Git Merge.
Ahora que sabes lo que es Git Rebase, la diferencia entre Git Rebase y Git se fusiona y por qué Git Rebase que usa, te mostraré cómo usarlo en la siguiente sección de este artículo a continuación.
Git Rebase Workflow:
En esta sección, crearé un nuevo repositorio de git en mi computadora local y le mostraré cómo funciona Git Rebase. Le recomiendo que comprenda bien a Git Rebase antes de aplicarlo en su proyecto.
Primero, cree un nuevo repositorio de git Rebase-Demo/ en su computadora de la siguiente manera:
$ git init rebase-demo
Ahora, navegue al Rebase-Demo/ Directorio de la siguiente manera:
$ CD Rebase-Demo/
Ahora, crea un nuevo archivo prueba.TXT como sigue:
$ echo "a"> prueba.TXT
La prueba.El archivo txt contiene solo una línea A. Digamos que este es su código de proyecto inicial.
Ahora, comete los cambios de la siguiente manera:
$ git add .
$ git commit -m 'a'
Ahora, agregue otra línea B hacia prueba.TXT Archivo como se muestra en la captura de pantalla a continuación.
Ahora, comete los cambios de la siguiente manera:
$ git add .
$ git commit -m 'b'
Ahora, agregemos otra línea C al prueba.TXT archivo.
Además, comete los cambios de la siguiente manera:
$ git add .
$ git commit -m 'c'
Ahora, la historia del comet de la rama maestra debe verse de la siguiente manera:
$ git log -enneline
Ahora, digamos, tienes algunas ideas nuevas que quieres probar. Entonces, creemos y compensemos a una nueva rama nueva caracteristica como sigue:
$ git checkout -b nueva característica
Ahora, agregue su nueva idea (la línea D Digamos) al prueba.TXT archivo.
Ahora, comete los cambios de la siguiente manera:
$ git add .
$ git commit -m 'd'
Ahora, agregue la línea E al prueba.TXT archivo.
Comprometer los cambios de la siguiente manera:
$ git add .
$ git commit -m 'e'
Ahora, la historia de cometer del nueva caracteristica La rama debe verse de la siguiente manera:
$ git log -enneline
Vea cómo están los compromisos en orden un < B < C < D < E?
Ahora, recuerdas que olvidaste agregar algo al maestro rama que también querías estar en el nueva caracteristica rama! Entonces, consulte el maestro rama.
Agregué una nueva línea al final del prueba.TXT Archivo como puede ver.
Ahora, comete los cambios de la siguiente manera:
$ git add .
$ git commit -m 'g'
Ahora, la historia de cometer del maestro La rama debería verse así.
A < B < C < G
Ahora, para rebotar los compromisos del maestro rama a la nueva caracteristica rama, primer pago al nueva caracteristica rama.
$ git checkout nueva característica
Ahora, haz un Git Rebase del maestro rama de la siguiente manera:
$ Git Rebase Master
Algunos conflictos de fusiones! Arreglemos eso.
Bueno, los cambios que he realizado en la comisión GRAMO y D son conflictivos entre sí. Quiero mantener ambos.
Después de arreglar el conflicto de fusión, el prueba.TXT El archivo debe verse de la siguiente manera:
Ahora, agregue los cambios al área de puesta en escena de la siguiente manera:
$ git add .
Ahora, continúe el Rebase operando de la siguiente manera:
$ Git Rebase -Contrinue
Otro conflicto de fusión! Bueno, esto puede suceder. Rebase cambia el historial de confirmación de git. Entonces, se esperan cosas como esta.
Parece que el proceso de fusión falló debido a algunas líneas vacías. Arreglemos eso.
Después de arreglar el conflicto de fusión, el prueba.TXT El archivo debe verse de la siguiente manera.
Ahora, agregue los cambios al área de puesta en escena de la siguiente manera:
$ git add .
Ahora, continúe la operación de Rebase de la siguiente manera:
$ Git Rebase -Contrinue
Git Rebase está completo.
Como puede ver, se actualiza el historial de confirmación de la nueva rama. Ahora, la historia del comet es la siguiente:
A < B < C < G < D < E
Tal como se esperaba.
El final prueba.TXT El archivo debe verse de la siguiente manera.
Git Rebase es una herramienta poderosa. Pero, nunca debe usarlo en repositorios de git compartidos. Úselo solo en los repositorios GIT que trabaja solo. De lo contrario, enfrentarás muchos problemas en el camino.
Entonces, así es como usas Git Rebase. Gracias por leer este artículo.