Latest web development tutorials

gestione dei rami Git

Quasi ogni sistemi di controllo versione supportano una qualche forma di ramo. Significa che è possibile utilizzare un ramo dalla linea principale di sviluppo per separare e non influenza la linea principale, pur continuando a lavorare.

Qualcuno Git modello di ramificazione denominata "nirvana Caratteristiche", ma proprio perché distinto dal sistema di controllo versione Git per la famiglia.

Creare una istruzione di salto:

git branch (branchname)

comando di commutazione Branch:

git checkout (branchname)

Quando si passa rami, Git utilizzerà conclusioni finali istantanee del ramo sostituire il contenuto della directory di lavoro, filiale multipla non richiede più directory.

Unire Rami comando:

git merge 

È possibile unire in un unico ramo molte volte, si può anche scegliere di eliminare direttamente dopo la fusione essere incorporato rami.


gestione dei rami Git

ramo liste

I comandi di base sono elencati nel ramo:

git branch

Quando nessun argomento, git branch saranno elencati nella vostra filiale locale.

$ git branch
* master

In questo caso significa che abbiamo chiamato un ramo "master", ed il ramo è il ramo corrente.

Quando si esegue git init, il default Git creerà ramo "master" per voi.

Se vogliamo creare manualmente un ramo e passare. Esegui git branch (branchname) può essere.

$ git branch testing
$ git branch
* master
  testing

Ora possiamo vedere che con un nuovo test ramo.

Quando si invia un aggiornamento in questo modo negli ultimi creato un nuovo ramo, se successiva presenta una versione aggiornata, e quindi passare al ramo "testing", Git ripristinerà la directory di lavoro a guardare come quando si crea un ramo

Successivamente, vi mostreremo come passare rami, siamo passati con git checkout (ramo) che vogliamo modificare il 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 siamo passati al ramo "testing", si aggiunge un nuovo test.txt file è stato rimosso hello.php file, il file originale viene eliminato è emerso. Ritornando al ramo "master", essi sono riemersi.

$ git checkout master
Switched to branch 'master'
$ ls
README		test.txt

Possiamo anche utilizzare il comando git checkout -b (branchname) per creare un nuovo ramo e immediatamente commutato al ramo, al fine di operare in quel 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

Come potete vedere, abbiamo creato un ramo, rimuovere alcuni file nel contesto di questo ramo, e poi tornare al nostro ramo principale, quei file indietro.

Utilizzare ramo taglio separato lavorerà, in modo da poter fare le cose in contesti diversi, e passare avanti e indietro.

rimuovere i rami

Rimuovere l'istruzione di salto:

git branch -d (branchname)

Ad esempio, vogliamo rimuovere ramo "test":

$ git branch
* master
  testing
$ git branch -d testing
Deleted branch testing (was 85fc7e7).
$ git branch
* master

unire ramo

Una volta che un ramo ha un contenuto autonomo, alla fine vuole fondersi di nuovo nel vostro ramo master. È possibile utilizzare il seguente comando per qualsiasi filiale fuse nel ramo corrente:

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

Gli esempi sopra riportati ci Newtest uniti nel ramo principale in ramo, test2.txt file viene eliminato.

Unisci conflitti

Combinato e non semplicemente aggiungere un file, l'operazione di rimozione, Git sarà anche unire le modifiche.

$ git branch
* master
$ cat test.txt
w3cschool.cc

In primo luogo, si crea una directory chiamata "change_site" commutazione ramo in passato, ci si accontenterà di 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(-)
 

Il contenuto modificato presentato al "change_site" ramo. Ora, se si passa indietro al ramo "master" che si possa tornare a vedere il contenuto delle nostre modifiche, prima di modificare nuovamente il file test.txt.

$ 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(+)
 

Ora queste modifiche sono state registrate nel mio "maestro" del ramo. Avanti ci sarà "change_site" consolidamento ramo sopra.

 $ 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

Vi si fondono prima di un ramo in ramo "master", sorge un conflitto di unione, quindi abbiamo bisogno di modificare 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
 +新增加一行

In Git, git add che possiamo usare per dire Git conflitto di file è stato risolto

$ git status -s
UU test.txt
$ git add test.txt 
$ git status -s
M  test.txt
$ git commit
[master 88afe0e] Merge branch 'change_site'

Ora abbiamo risolto con successo i conflitti di unione, e presentare i risultati.