Tutoriel de dém...SE CONNECTER
Tutoriel de démarrage rapide Git
auteur:php.cn  temps de mise à jour:2022-04-11 13:44:34

Gestion des branches Git


Presque tous les systèmes de contrôle de version prennent en charge le branchement sous une forme ou une autre. L'utilisation de branches signifie que vous pouvez vous éloigner de la ligne principale de développement et continuer à travailler sans affecter la ligne principale.

Certaines personnes qualifient le modèle de branchement de Git de « fonctionnalité nirvana », et c'est précisément grâce à cela qu'il distingue Git de la famille des systèmes de contrôle de version.

Commande Créer une branche :

git branch (branchname)

Commande Changer de branche :

git checkout (branchname)

Lorsque vous changez de branche, Git remplacera votre répertoire de travail par le dernier instantané validé du contenu de la branche, donc plusieurs branches ne nécessitent pas plusieurs répertoires.

Commande de fusion de branche :

git merge

Vous pouvez fusionner plusieurs fois avec la même branche, ou vous pouvez choisir de supprimer la branche fusionnée directement après la fusion.


Gestion des branches Git

Liste des branches

Commande de base pour lister les branches :

git branch

Sans paramètres, git branch listera votre branche localement.

$ git branch
* master

Ce que cet exemple signifie, c'est que nous avons une branche appelée "master", et cette branche est la branche actuelle.

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

Si nous voulons créer manuellement une branche et y basculer. Exécutez simplement la branche git (nom de la branche).

$ git branch testing
$ git branch
* master
  testing

Maintenant, nous pouvons voir qu'il y a une nouvelle branche testing.

Lorsque vous créez une nouvelle branche après le dernier commit de mise à jour de cette manière, s'il y a un commit de mise à jour plus tard, et que vous passez ensuite à la branche "testing", Git restaurera votre répertoire de travail au moment où vous créé la branche.

Ensuite, nous montrerons comment changer de branche. Nous utilisons git checkout (branch) pour basculer vers la branche que nous voulons modifier.

$ 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 branche "testing", le nouveau fichier test.txt que nous avons ajouté a été supprimé et le fichier hello.php initialement supprimé est réapparu. En revenant sur la branche "master", ils réapparurent.

$ 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 basculer immédiatement vers cette branche pour 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, supprimé certains fichiers dans le contexte de cette branche, puis sommes revenus à notre branche principale et ces fichiers sont de retour.

Utilisez des branches pour séparer le travail, ce qui nous permet de faire les choses dans différents contextes et de basculer d'un côté à l'autre.

Supprimer la branche

Commande Supprimer la branche :

git branch -d (branchname)

Par exemple, nous souhaitons supprimer la branche "testing" :

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

Fusion de branches

Une fois qu'une branche a du contenu indépendant, vous souhaiterez éventuellement la fusionner à nouveau dans votre branche principale. Vous pouvez utiliser la commande suivante pour fusionner n'importe quelle branche dans la branche actuelle :

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

Dans l'exemple ci-dessus, nous avons fusionné la branche newtest dans la branche principale et le fichier test2.txt a été supprimé.

Conflits de fusion

La fusion n'est pas qu'une simple opération d'ajout et de suppression de fichiers, Git fusionnera également les modifications.

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

Tout d'abord, nous créons une branche appelée "change_site", y passons et modifions le contenu en 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(-)

Soumettez le contenu modifié à la branche "change_site". Maintenant, si nous revenons à la branche "master", nous pouvons voir que le contenu est restauré tel qu'il était avant que nous le modifiions, et 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(+)

Les modifications sont désormais enregistrées dans ma branche "master". Ensuite, nous fusionnons la branche "change_site".

 $ 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 avons fusionné la branche précédente dans la branche "master", et un conflit de fusion s'est produit. Ensuite, nous devons 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, nous pouvons utiliser git add pour indiquer à Git que le conflit de fichiers 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'

Nous avons maintenant résolu avec succès le conflit lors de la fusion et validé le résultat.

Site Web PHP chinois