Latest web development tutorials

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.