Latest web development tutorials

gestion de la branche Git

Presque tous les systèmes de contrôle de version supportent une certaine forme de branche. Cela signifie que vous pouvez utiliser une branche de la ligne principale de développement pour séparer et n'a aucune incidence sur la ligne principale, tout en continuant à travailler.

Quelqu'un Git modèle de branchement appelé "nirvana Caractéristiques", mais précisément parce qu'il distingue du système de contrôle de version Git pour la famille.

Créer une instruction de branchement:

git branch (branchname)

Direction commande de commutation:

git checkout (branchname)

Lorsque vous basculez branches, Git utilisera les conclusions finales des instantanés de la branche remplacent le contenu de votre répertoire de travail, branche multiple ne nécessite pas plusieurs répertoires.

Fusionner Branches commande:

git merge 

Vous pouvez fusionner en une branche unifiée à plusieurs reprises, vous pouvez également choisir de supprimer directement après la fusion être incorporé branches.


gestion de la branche Git

Listes branche

Les commandes de base sont répertoriés dans la branche:

git branch

Lorsque aucun argument, git branch sera listé dans votre succursale locale.

$ git branch
* master

Dans ce cas, cela signifie que nous avons appelé un «maître» branche et la branche est la branche courante.

Lorsque vous exécutez git init, la valeur par défaut Git va créer branche "master" pour vous.

Si nous voulons créer manuellement une branche et basculer. Exécuter git branch (branchname) peut être.

$ git branch testing
$ git branch
* master
  testing

Maintenant, nous pouvons voir que, avec un nouveau test de branche.

Lorsque vous soumettez une mise à jour de cette manière dans le dernier créé une nouvelle branche, si plus tard également présenter des mises à jour, puis passer à la branche «testing», Git va restaurer votre répertoire de travail pour ressembler lorsque vous créez une branche

Ensuite, nous allons vous montrer comment passer branches, nous sommes passés avec git checkout (branche) que nous voulons modifier la branche.

$ 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

Lorsque nous sommes passés à la «testing» branche, nous ajoutons une nouvelle test.txt de fichier a été supprimé hello.php de fichier, le fichier original est supprimé a émergé. Le retour à la branche "master", ils sont réapparus.

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

Nous pouvons également utiliser la commande git checkout -b (branchname) pour créer une nouvelle branche et immédiatement commuté à la branche, afin d'opérer dans cette branche.

$ 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

Comme vous pouvez le voir, nous avons créé une branche, supprimer certains fichiers dans le cadre de cette branche, puis revenir à notre branche principale, ces fichiers en arrière.

Utilisez la branche de coupe séparée va fonctionner, de sorte que nous pouvons faire des choses dans des contextes différents, et basculer.

Enlevez les branches

Retirer l'instruction de branchement:

git branch -d (branchname)

Par exemple, nous voulons supprimer "testing" branche:

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

Fusionner branche

Une fois une branche a un contenu indépendant, vous allez finir par vouloir fusionner dans votre branche master. Vous pouvez utiliser la commande suivante à une branche fusionnée dans la branche courante à:

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

Les exemples ci-dessus, nous Newtest fusionnés dans la branche principale branche, test2.txt fichier est supprimé.

Fusionner les conflits

Combiné et non pas simplement ajouter un fichier, l'opération supprimée, Git permettra également de fusionner les modifications.

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

Tout d'abord, nous créons un répertoire appelé commutation de branche "de change_site" dans le passé, nous serons contenu à 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(-)
 

Le contenu modifié soumis à "change_site" branche. Maintenant, si vous revenez à la branche "master" que nous pouvons revenir à voir le contenu de nos modifications avant que nous modifions à nouveau le fichier 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(+)
 

Or, ces changements ont été enregistrés dans mon «maître» de la branche. Ensuite, nous allons "change_site" consolidation de la branche sur.

 $ 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

Nous allons fusionner avant une branche à branche "master", un conflit de fusion se pose, alors nous avons besoin de la modifier manuellement.

$ 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
 +新增加一行

Dans Git, git ajouter que nous pouvons utiliser pour dire Git fichier conflit a été résolu

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

Maintenant, nous avons réussi à résoudre les conflits de fusion, et de soumettre les résultats.