gestão git branch
Quase todos os sistemas de controle de versões suportam alguma forma de ramo. Isso significa que você pode usar um ramo da linha principal de desenvolvimento para separar e não afeta a linha principal, continuando a trabalhar.
Alguém ramificação Git modelo chamado "nirvana Características", mas precisamente porque distinguido do sistema de controle de versão Git para a família.
Criar uma instrução de desvio:
git branch (branchname)
Filial comando de comutação:
git checkout (branchname)
Quando você alternar ramos, Git usará conclusões finais instantâneos da sucursal substituir o conteúdo de seu diretório de trabalho, múltiplos ramo não exige vários diretórios.
comando Merge Branches:
git merge
Você pode fundir em um sistema unificado de filiais muitas vezes, você também pode optar por excluir diretamente após a fusão ser incorporados ramos.
gestão git branch
listas de ramo
comandos básicos são listados no ramo:
git branch
Quando não há argumentos, git branch serão listados na sua filial local.
$ git branch * master
Neste caso, isso significa que temos chamado de um ramo "mestre", eo ramo é o ramo atual.
Quando você executar git de inicialização, o padrão Git irá criar branch "master" para você.
Se queremos criar manualmente um ramo e passar. Executar git branch (branchname) pode ser.
$ git branch testing $ git branch * master testing
Agora podemos ver que com um novo teste de ramo.
Quando você envia uma atualização dessa maneira no último criado um novo ramo, se mais tarde também enviar atualizações, e depois mudar para o ramo "testando", Git irá restaurar o seu diretório de trabalho para olhar como quando você cria um ramo
Em seguida, vamos mostrar-lhe como mudar ramos, nós mudamos com git checkout (ramo) que pretende modificar o ramo.
$ 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
Quando nós mudamos para o ramo "teste", nós adicionamos um novo arquivo test.txt foi removido, o arquivo original é excluído ola.php arquivo surgiu. Se mudar de volta para o ramo "mestre", eles reapareceram.
$ git checkout master Switched to branch 'master' $ ls README test.txt
Nós também pode usar o comando git checkout -b (branchname) para criar um novo ramo e imediatamente mudou para o ramo, a fim de operar nesse ramo.
$ 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 você pode ver, nós criamos um ramo, remova alguns ficheiros no contexto deste ramo, e depois voltar para o nosso principal ramo, esses arquivos de volta.
Use ramo de corte separada irá funcionar, de modo que podemos fazer as coisas em contextos diferentes, e alternar.
Retire os ramos
Remova a instrução de desvio:
git branch -d (branchname)
Por exemplo, queremos remover ramo "teste":
$ git branch * master testing $ git branch -d testing Deleted branch testing (was 85fc7e7). $ git branch * master
mesclar ramo
Uma vez que um ramo tem conteúdo independente, você acabará por querer fundi-lo de volta para o seu branch master. Você pode usar o seguinte comando para qualquer ramo integradas ao ramo atual para:
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
Os exemplos acima vamos newtest integradas ao ramo principal em galho, test2.txt arquivo é excluído.
conflitos de mesclagem
Combinado e não simplesmente adicionar um arquivo, a operação de retirada, Git também irá integrar as alterações.
$ git branch * master $ cat test.txt w3cschool.cc
Primeiro, criamos um diretório chamado "change_site" comutação ramo no passado, vamos nos contentar em 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(-)
O conteúdo modificado submetidos a "change_site" ramo. Agora, se você voltar para o ramo "mestre" que podemos voltar a ver o conteúdo de nossas modificações antes de modificar o arquivo test.txt novamente.
$ 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(+)
Agora, essas alterações foram registradas no meu "mestre" do ramo. Em seguida, vamos "change_site" consolidação filial 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 mesclar antes de um galho em galho "mestre", um conflito de mesclagem surge, então precisamos modificá-lo 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 +新增加一行
No Git, git add que podemos usar para contar Git conflito de arquivo foi resolvido
$ git status -s UU test.txt $ git add test.txt $ git status -s M test.txt $ git commit [master 88afe0e] Merge branch 'change_site'
Agora temos resolvido com sucesso conflitos de mesclagem, e apresentar os resultados.