4.1 ¿Qué es una sucursal?
En el proceso de control de versiones, varias tareas se impulsan al mismo tiempo. Para cada tarea, podemos crear una
rama. El uso de ramas significa que los programadores pueden separar su trabajo de la línea principal de desarrollo, y al desarrollar sus propias ramas
En este momento, no afectará el funcionamiento de la sucursal principal. Para los principiantes, una rama puede entenderse simplemente como una copia, una rama es
una copia separada. (La capa inferior de la rama es en realidad una referencia al puntero)
4.2 Beneficios de la ramificación
Promover simultáneamente el desarrollo de múltiples funciones en paralelo para mejorar la eficiencia del desarrollo.
Durante el proceso de desarrollo de cada rama, si falla el desarrollo de una determinada rama, no tendrá ningún impacto en otras ramas. fallar
Elimine la rama y comience de nuevo.
4.3 Operación de sucursales
4.3.1 Ver rama
1) Gramática básica
git rama -v
2) Práctica de casos
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro)
$ git rama -v
* master 087a1a7 mi tercer compromiso (* representa la partición actual)
4.3.2 Crear una sucursal
1) Gramática básica
nombre de la rama de la rama de git
2) Práctica de casos
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro)
arreglo en caliente de la rama de $ git
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro)
$ git rama -v
hot-fix 087a1a7 mi tercer compromiso (nueva rama recién creada, y el maestro de rama principal
Se copia el contenido de la copia)
* maestro 087a1a7 mi tercer compromiso
4.3.3 Modificar rama
-- Hacer cambios en la rama principal
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro)
$ vim hola.txt
--Agregar área de preparación
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro)
$ git agregar hola.txt
--Enviar a la biblioteca local
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro)
$ git commit -m "mi cuarta confirmación" hola.txt
[master f363b4c] mi cuarta confirmación
1 archivo modificado, 1 inserción (+), 1 eliminación (-)
-- ver rama
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro)
$ git rama -v
revisión 087a1a7 mi tercer compromiso (la rama de revisión no realizó ningún cambio)
* master f363b4c mi cuarta confirmación (la rama maestra actual se ha actualizado a la última confirmación
versión de)
-- Ver el contenido de los archivos en la rama principal
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro)
$ gato hola.txt
hola git! hola atguigu! 22222222222222
hola git! hola atguigu! 3333333333333
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu! prueba maestra
hola git! hola atguigu!
4.3.4 Cambiar de rama
1) Gramática básica
nombre de la rama de pago de git
2) Práctica de casos
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro)
revisión de $ git checkout
Cambiado a rama 'hot-fix'
-- Se encontró que la rama actual se ha cambiado de maestro a revisión
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (corrección)
ps
-- Verifique el contenido del archivo en la rama de revisión y descubra que es diferente del contenido en la rama maestra
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (corrección)
$ gato hola.txt
hola git! hola atguigu! 22222222222222
hola git! hola atguigu! 3333333333333
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
-- Hacer cambios en la rama de revisión
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (corrección)
$ gato hola.txt
hola git! hola atguigu! 22222222222222
hola git! hola atguigu! 3333333333333
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu! prueba de revisión
--Agregar área de preparación
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (corrección)
$ git agregar hola.txt
--Enviar a la biblioteca local
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (corrección)
$ git commit -m "compromiso de revisión" hola.txt
4.3.5 Fusión de sucursales
1) Gramática básica
git merge branchname
2) Caso práctico Combinar la rama de revisión en la rama principal
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro)
$ git merge revisión
hola.txt de fusión automática
CONFLICTO (contenido): Combinar conflicto en hello.txt
Fusión automática fallida; solucione los conflictos y luego confirme el resultado.
4.3.6 Conflictos
La actuación del conflicto: el estado subsiguiente es FUSIÓN
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro|FUSIÓN)
$ gato hola.txt
hola git! hola atguigu! 22222222222222
hola git! hola atguigu! 3333333333333
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu! prueba maestra
hola git! hola atguigu!
=======
hola git! hola atguigu!
hola git! hola atguigu! prueba de revisión
>>>>>>> revisión
Causa del conflicto:
Al fusionar ramas, las dos ramas tienen dos conjuntos de modificaciones completamente diferentes en la misma ubicación en el mismo archivo. Git no puede reemplazar
Nosotros decidimos cuál usar. El contenido del nuevo código debe decidirse manualmente.
Consultar el estado (se han detectado dos modificaciones en el expediente)
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro|FUSIÓN)
$ git estado
En maestro de rama
Tienes caminos no fusionados.
(solucionar conflictos y ejecutar "git commit")
(use "git merge --abort" para cancelar la fusión)
Rutas no fusionadas:
(use "git add ..." para marcar la resolución)
ambos modificados: hola.txt
no se agregaron cambios para confirmar (use "git add" y/o "git commit -a")
4.3.7 Resolución de conflictos
1) Edite los archivos en conflicto, elimine símbolos especiales, decida qué usar
Símbolos especiales: el código de la rama actual ======= código fusionado >>>>>>> hot-fix
hola git! hola atguigu! 22222222222222
hola git! hola atguigu! 3333333333333
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu!
hola git! hola atguigu! prueba maestra
hola git! hola atguigu! prueba de revisión
2) Agregar al área de preparación
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro|FUSIÓN)
$ git agregar hola.txt
3) Ejecute la confirmación (nota: el nombre del archivo no se puede usar cuando se usa el comando git commit en este momento)
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro|FUSIÓN)
$ git commit -m "combinar revisión"
[maestro 69ff88d] combinación de revisión
--Se encontró que la FUSIÓN desapareció y se volvió normal
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (maestro)
4.4 Crear rama y cambiar diagrama de rama
master y hot-fix son en realidad punteros a registros de versiones específicas. La rama actual en realidad es creada por HEAD
decidido. Entonces, la esencia de crear una rama es crear un puntero más.
Si HEAD apunta a maestro, ahora estamos en la rama maestra.
HEAD Si hicimos una revisión, ahora estamos en la rama de revisión.
Entonces, la esencia de cambiar de rama es mover el puntero HEAD.