Responsable de Git
Casi todos los sistemas de control de versiones compatibles con alguna forma de rama. Esto significa que puede utilizar una rama de la línea principal de desarrollo para separar y no afecta a la línea principal sin dejar de trabajar.
Alguien Git modelo de ramificación denominada "Características nirvana", pero precisamente porque se distingue del sistema de control de versiones Git para la familia.
Crear una instrucción de salto:
git branch (branchname)
orden de conmutación rama:
git checkout (branchname)
Cuando cambia ramas, Git utilizará conclusiones finales instantáneas de la sucursal reemplazar el contenido de su directorio de trabajo, rama múltiple no requiere múltiples directorios.
Combinar bifurcaciones comando:
git merge
Puede fundirse en una rama unificada muchas veces, también se puede optar por eliminar directamente después de la fusión se incorpora ramas.
Responsable de Git
rama listas
comandos básicos se enumeran en la rama:
git branch
Cuando no hay argumentos, rama git será incluido en su sucursal local.
$ git branch * master
En este caso, significa que hemos llamado una rama "master", y la rama es la rama actual.
Cuando se ejecuta git init, el valor predeterminado Git creará rama "master" para usted.
Si queremos crear manualmente una rama y active la selección. Ejecutar git branch (BRANCHNAME) puede ser.
$ git branch testing $ git branch * master testing
Ahora podemos ver que con una nueva prueba rama.
Cuando se envía una actualización de esta manera en el último creado una nueva rama, si más tarde también presentar versiones actualizadas, y luego cambiar a la rama "probar", Git va a restaurar el directorio de trabajo para parecerse al crear una rama
A continuación, le mostraremos cómo cambiar ramas, cambiamos con git checkout (rama) que queremos modificar la rama.
$ ls README $ echo 'w3cschool.cc' > test.txt $ git add . $ git commit -m 'add test.txt' [master 048598f] add test.txt 2 files changed, 1 insertion(+), 3 deletions(-) delete mode 100644 hello.php create mode 100644 test.txt $ ls README test.txt $ git checkout testing Switched to branch 'testing' $ ls README hello.php
Cuando nos cambiamos a la rama "prueba", se añade un nuevo archivo test.txt se eliminó hola.php archivo, el archivo original se elimina ha surgido. Cambiar de nuevo a la rama "master", que han vuelto a aparecer.
$ git checkout master Switched to branch 'master' $ ls README test.txt
También podemos usar el comando git checkout -b (BRANCHNAME) para crear una nueva secundaria, e inmediatamente cambió a la rama, con el fin de actividad en este sector.
$ git checkout -b newtest Switched to a new branch 'newtest' $ git rm test2.txt rm 'test2.txt' $ ls README test.txt $ git commit -am 'removed test2.txt' [newtest 556f0a0] removed test2.txt 1 file changed, 1 deletion(-) delete mode 100644 test2.txt $ git checkout master Switched to branch 'master' $ ls README test.txt test2.txt
Como se puede ver, hemos creado una rama, elimine algunos archivos en el contexto de esta rama, y luego volver a nuestra rama principal, los archivos de nuevo.
Utilice rama separada de corte va a funcionar, por lo que podemos hacer las cosas en diferentes contextos, y alternar.
Quite las ramas
Retire la instrucción de salto:
git branch -d (branchname)
Por ejemplo, queremos eliminar rama "prueba":
$ git branch * master testing $ git branch -d testing Deleted branch testing (was 85fc7e7). $ git branch * master
combinar rama
Una vez que una rama tiene un contenido autónomo, es muy probable que fusionar de nuevo en su rama principal. Se puede utilizar el siguiente comando para cualquier rama fusionado en la rama actual a:
git merge
$ git branch * master newtest $ ls README test.txt test2.txt $ git merge newtest Updating 2e082b7..556f0a0 Fast-forward test2.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 test2.txt $ ls README test.txt
Los ejemplos anteriores nos newtest fusionado en la rama principal en rama, se elimina test2.txt archivo.
combinar los conflictos
Combinado y no simplemente agregar un archivo, la operación eliminado, Git también combinar los cambios.
$ git branch * master $ cat test.txt w3cschool.cc
En primer lugar, se crea un directorio llamado "change_site" conmutación de la rama en el pasado, nos contentaremos con www.w3cschool.cc.
$ git checkout -b change_site Switched to a new branch 'change_site' $ vim test.txt $ head -1 test.txt www.w3cschool.cc $ git commit -am 'changed the site' [change_site d7e7346] changed the site 1 file changed, 1 insertion(+), 1 deletion(-)
El contenido modificado presentado a "change_site" rama. Ahora bien, si se cambia de nuevo a la rama "master" que podemos volver a ver el contenido de nuestras modificaciones antes de modificar el archivo test.txt nuevo.
$ git checkout master Switched to branch 'master' $ head -1 test.txt w3cschool.cc $ vim test.txt $ cat test.txt w3cschool.cc 新增加一行 $ git diff diff --git a/test.txt b/test.txt index 704cce7..f84c2a4 100644 --- a/test.txt +++ b/test.txt @@ -1 +1,2 @@ w3cschool.cc +新增加一行 $ git commit -am '新增加一行' [master 14b4dca] 新增加一行 1 file changed, 1 insertion(+)
Ahora bien, estos cambios han sido registrados en mi "maestro" de la rama. A continuación vamos a "change_site" consolidación de la ramificación sobre.
$ git merge change_site Auto-merging test.txt CONFLICT (content): Merge conflict in test.txt Automatic merge failed; fix conflicts and then commit the result. $ cat test.txt <<<<<<< HEAD w3cschool.cc 新增加一行 ======= www.w3cschool.cc >>>>>>> change_site
Vamos a fusionar antes de una rama en rama "master", surge un conflicto de combinación, entonces tenemos que modificar manualmente.
$ vim test.txt $ cat test.txt www.w3cschool.cc 新增加一行 $ git diff diff --cc test.txt index f84c2a4,bccb7c2..0000000 --- a/test.txt +++ b/test.txt @@@ -1,2 -1,1 +1,2 @@@ - w3cschool.cc + www.w3cschool.cc +新增加一行
En Git, git add que podemos utilizar para contar Git conflicto de archivos se ha resuelto
$ git status -s UU test.txt $ git add test.txt $ git status -s M test.txt $ git commit [master 88afe0e] Merge branch 'change_site'
Ahora hemos resuelto con éxito conflictos de fusión, y presentar los resultados.