Maison > outils de développement > git > le corps du texte

Outil de contrôle de version Git - gestion des branches

齐天大圣
Libérer: 2020-06-22 10:26:09
original
2933 Les gens l'ont consulté

Branch est une application géniale de Git Contrairement à d'autres outils de contrôle de version, git est extrêmement efficace pour créer et changer de branche.

Présentation de la succursale

Qu'est-ce qu'une succursale ? Commençons par un scénario que nous connaissons très bien. Un produit lancé doit maintenant ajouter une nouvelle fonction. Pour le moment, si on continue à développer sur la branche d'origine, ce sera très gênant, car c'est une application qui a déjà été lancée, et elle doit être testée avant de pouvoir être lancée. Généralement, notre approche consiste à créer une nouvelle branche, à développer de nouvelles fonctions sur cette nouvelle branche, puis à les fusionner dans la branche principale après tests.

Création et changement de branches

La situation actuelle de mes branches de référentiel est la suivante :

Outil de contrôle de version Git - gestion des branches

Créer une branche

Maintenant, nous créons une nouvelle branche, dev. Les commandes pour créer une branche et afficher la branche sont les suivantes :

git branch 分支名
git branch

# git branch dev
# git branch
  dev
* master
Copier après la connexion

Changer de branche

La branche a été établie avec succès. Passons maintenant à une nouvelle branche. La commande pour changer de branche est la suivante git checkout branch name

# git checkout dev
Switched to branch 'dev'
Copier après la connexion

Outil de contrôle de version Git - gestion des branches

Maintenant, nous apportons quelques modifications dans la nouvelle branche, puis validons, puis basculez vers la branche principale, apportez quelques modifications et soumettez. Ensuite, nous regardons le statut de la succursale.

git vim config.php # 修改config.php文件
git add . && git commit -m 'add config.php'

git checkout master # 切换到主分支
git vim config.php
git add . && git commit -m 'change config.php'
Copier après la connexion

Outil de contrôle de version Git - gestion des branches

$ git log --oneline --decorate --graph --all
* ca4589c (HEAD -> master) add config file
| * 43a5a8f (dev) add config.php
|/
* 19e3186 add index.php
* 9cc82f9 first commit
Copier après la connexion

Une commande pour créer et changer de branche

git checkout -b 新分支名
Copier après la connexion

Fusionner d'agences

Introduisez d'abord un scénario, très courant :

  • Un système a été en ligne

  • Le système doit être mis à jour avec une nouvelle fonctionnalité, vous créez donc une nouvelle branche (dev) et travaillez sur cette branche.

  • À ce moment-là, un problème est soudainement survenu dans le système et a nécessité une enquête et un traitement urgents.

  • Ensuite, à ce moment vous devez d'abord passer à la version en ligne (master), puis créer une nouvelle branche (fixbug) et corriger les erreurs sur la nouvelle branche

  • Après avoir terminé le test, passez à la branche en ligne, puis fusionnez la branche fixbug, puis transférez les modifications vers la branche en ligne.

  • Enfin, nous pouvons passer à la branche dev pour continuer à travailler.

Actuellement, l'état de notre référentiel est le suivant :

Outil de contrôle de version Git - gestion des branches

Maintenant, nous devons créer une nouvelle branche et ajouter de nouvelles ceux de la nouvelle branche Function.

git checkout -b dev
Copier après la connexion

Ensuite, effectuez quelques modifications sur la nouvelle branche.

Outil de contrôle de version Git - gestion des branches

À ce moment-là, un bug grave est apparu en ligne et nécessitait un traitement urgent. Eh bien, je dois d’abord passer à la branche master. Mais une erreur s'est produite lors du changement

$ git checkout master
error: Your local changes to the following files would be overwritten by checkout:
        login.php
Please commit your changes or stash them before you switch branches.
Aborting
Copier après la connexion

Nous rencontrons souvent l'erreur ci-dessus parce queLors de la fusion des branches, l'espace de travail et la zone de préparation doivent être "propres". Il existe deux façons de répondre aux exigences ci-dessus

  • Soumettre les modifications

  • Staging

Nous sommes ici Utilisez la méthode temporaire pour démontrer

$ git stash
$ git checkout master
Switched to branch 'master'
Copier après la connexion

当你切换分支的时候,Git 会重置你的工作目录,使其看起来像回到了你在那个分支上最后一次提交的样子。

现在,我们新建fixbug分支,在这个分支上修复bug。

$ git checkout -b fixbug
Copier après la connexion

合并分支

修复完成且测试通过时,就可以把它合并到master上了。合并使用git merge 分支名

$ git checkout master Switched to branch 'master' 
$ git merge fixbug
Copier après la connexion

删除分支

这个时候,fixbug功能已经完成了,可以将它给删除掉了。

$ git branch -d fixbug 
Deleted branch fixbug (was cca73bb).
Copier après la connexion

现在,我们可以继续在dev分支上工作了。我们需要把之前暂存的内容取出来。

$ git checkout dev

$ git stash pop
On branch dev
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   login.php

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (2f8476defbaa813e31f3e1b081f5b88416b2ff50)
Copier après la connexion

新功能完成后,提交到版本库。

Outil de contrôle de version Git - gestion des branches

冲突解决

现在我们新的功能完成了,那么就可以把它合并到master分支上了。现在我们来演示合并时遇到冲突时,如何去解决。

$ git checkout master
Switched to branch &#39;master&#39;

$ git merge dev
Auto-merging index.php
CONFLICT (content): Merge conflict in index.php
Automatic merge failed; fix conflicts and then commit the result.
Copier après la connexion

提示我index.php合并的时候有冲突,我们来看看该文件

$ cat index.php
<?php

<<<<<<< HEAD
echo &#39;hello world&#39;;
=======
echo &#39;version 1.1 finished&#39;;
>>>>>>> dev
Copier après la connexion
<br/>
Copier après la connexion
$ cat index.php 
<?php 
echo &#39;version 1.1 finished&#39;;
Copier après la connexion

然后再add并提交,最后在提交

$ git commit -m &#39;merge dev&#39;
Copier après la connexion

这个时候就合并成功了,现在就去删除dev分支吧。

$ git branch -d dev
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
git
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal