Aller au contenu principal

Git Branches et Merges

Branches

Jouer avec des branches!

  • Créer un nouveau repo sur GitHub appelé branches_de_chats
  • Créer 2 nouvelles branches, une branche chats et une branche plus_de_chats
  • Ajouter 3 fichiers texte
  • main.txt sur la branche main
  • chats.txt sur la branche chats
  • plus_de_chats.txt sur la branche plus_de_chats

Stash et unstash

  • Écrire des noms de chats dans chaque fichier sans faire de commit
  • Utiliser Stash et Pop (unstash) pour mettre les changement en attente et les récupérer

Commit des changements

  • Faire des commits de la version finale des fichiers
  • Fusionner tous les changements des 2 branches de chats sur la branche main

Les trois fichiers sont maintenant sur la branche main!

Conflits

Setup de l'exercice

  • Créer un repo sur GitHub
  • Ajouter un nouveau projet Angular sur le repo
  • Faire 2 clones du projet sur votre poste

Modifier le projet sans conflit

  • Dans le premier clone du repo
  • Ajouter 2 méthodes au fichier app.component.ts
  • Ne pas faire de commit immédiatement
export class AppComponent {
wow() {
}
incroyable() {

}
}
  • Dans l'autre clone du repo
  • Modifier le fichier app.component.html pour le code suivant
<div>
{{wow()}}
</div>
<div>
{{incroyable()}}
</div>
  • Faire les commits maintenant (un commit pour chaque clone du repo)
  • Il ne devrait pas avoir de conflit
  • Vous avez modifier des fichiers différents

Mettre les 2 clones du repo à jour

  • Récupérer la dernière version du code

Modifier sans conflit v.2.0

  • Dans le premier clone du repo
  • Modifier la méthode wow
  • Ne faites pas de commit tout de suite
wow() {
return "Ben voyons donc!"
}
  • Dans le deuxième clone du repo
  • Modifier la méthode incroyable
incroyable() {
return "Je n'en reviens pas!"
}
  • Faire les commits maintenant (un commit pour chaque clone du repo)
  • Il ne devrait pas avoir de conflit
  • Même si vous avez modifié le même fichier, vous avez modifié des méthodes différentes
  • Mettre les 2 clones du repo à jour

Modifier avec conflit! 🧨

  • Dans le premier clone du repo
  • Modifier la méthode wow
  • Ne faites pas de commit tout de suite
wow() {
return "Ah! voilà!"
}
  • Dans le deuxième clone du repo
  • Modifier la méthode wow
wow() {
return "Boom!"
}
  • Faire les commits maintenant (un commit pour chaque clone du repo)
  • Il devrait y avoir un conflit
  • Vous avez la même méthode / la même ligne dans le même fichiers

Résoudre le conflit

Vous avez 3 options:

  • Garder la version du premier repo
  • Garder la version du deuxième repo
  • Garder la fusion des deux versions

Garder la version du code qui n'est pas encore enregistré sur le repo

Voilà!