Giter Club home page Giter Club logo

workshop-github-gitkraken's Introduction

Workshop Github et Gitkraken !

Ce workshop a pour but de vous faire comprendre comment fonctionne les issues GitHub et l'outil Gitkraken à travers quelques exercices pratiques contenant des situations complexe qui peuvent vous arrivez lorsque vous travailler en groupe.

Dans ce workshop, nous aborderons les sujets suivants :

  • Fork un repo
  • Paramétrer son GitKraken
  • Résoudre des conflits de branches et de commits
  • Récupérer le commit d'une autre branche
  • Mettre à jour une branche avec le master/main
  • Gérer vos branches
  • Créer, récupérer, modifier ou supprimer des stashs
  • Rename un commit

A chaque fin d'exercice, une explication sera faite pour vous expliquer comment correctement effectuer les actions nécessaires pour résoudre l'exercice.

Quelques liens qui pourront vous être utiles :

Pour ce workshop, vous aurez besoin de Gitkraken disponible via le lien si dessus. GitKraken est un logiciel avec une version gratuite et payante, la version payante est disponible gratuitement si vous êtes étudiant (Epitech) à l'aide du Student Pack Github via ce lien.

N.B: Il est préférable d'avoir la version payante qui est disponible jusqu'à la fin de vos études mais si vous n'avez pas encore le Student Pack ou si vous ne pouvez pas l'avoir vous pouvez sauter certains exercices, nous ferons l'explication directement sur Discord

0 - Init

Pour le premier exercice nous vous demandons d'installer GitKraken et de préparer l'environnement.

Pour cela :

  • Installer GitKraken
  • Fork ce répertoire Github
  • Cloner le fork de ce répertoire
  • Lancer GitKraken et ouvrir le dossier que vous venez de clone

Tout devrais être bon maintenant, faites attention à bien cloner votre répertoire et pas celui là, c'est obligatoire pour passer à la suite.

1 - Créer son kanban

C'est la première étape pour bien mettre en place les objectifs et tâches de chacun lors de la réalisation d'un projet. Il peux arriver assez réguliérement dans un projet que le même fichier soit modifier sur deux branches différentes, si cela arrive, vous n'allez pas pouvoir merge la branche sur l'autre branche, cela provequera dans la plupart des cas un conflit.

  • Aller dans votre repo fork du workshop sur [GitHub] dans l'onglet "Issues"
  • Créer deux à trois issues (détaillez un minimum les issues, ne pas juste mettre le titre)
  • Aller dans l'onglet "Projects", créer un projet et assigner les issues au projet en cours
  • Créer un label "error handling", "bug" et "enhancement" et les assigner aux issues correspondantes
  • Ajouter une photo dans le commentaire de l'une des issues
  • Assigner une issue à au moins un membre de l'équipe
  • Close au moins une des issues et la déplacer dans la barre "Done"

2 - Conflict

Pour cette exercice, vous aurez besoin de créer un conflit vous même et de résoudre ce conflit.

Pour faire ça :

  • Créer une nouvelle branche new-name à partir du master
  • Modifier NAME par toto dans le printf du fichier ex01/main.c
  • Commitez et pushez votre commit
  • Revenez sur la branche master (Double clique sur le label "master")
  • Modifier à nouveau NAME cette fois ci par tata dans le printf du fichier ex01/main.c
  • Commitez et pushez votre commit
  • Mergez la branche new-name sur le master

A partir de là, GitKraken vous indiqueras qu'il y a un conflit lors du merge, à droite, la liste des fichiers en conflict sera affichée, pour résoudre le conflit cliquez directement sur le fichier en question.

Vous devez maintenant résoudre le conflit (choisissez la version que vous voulez), une fois fait, sauvegardez votre fichier et commitez votre merge.

N.B: Lorsque vous effectuez un merge de deux branches, la branche sur laquelle vous êtes sera TOUJOURS la branche réceptrice

3 - Cherry Pick

Il arrive parfois lorsque vous travaillez sur plusieurs branches en même temps que vous fassiez l'erreur de push votre commit sur la mauvaise branche. Pour résoudre cela, git vous offre une solution : Le cherrypick !

Chose importante à savoir, si cela vous arrive, vous ne devez surtout pas push le commit sur le remote, si c'est le cas, vous allez devoir force push pour supprimer le commit, ce qui est très déconseillé dans la plupart des cas !

Pour tester le cherrypick :

  • Modifier la valeur de retour dans le fichier ex02/main.c
  • Commitez (sans push) votre modification
  • Changez de branche (new-name)
  • Cherrypick le dernier commit du main sur la nouvelle branche
  • Pushez le commit

Maintenant, il va falloir nettoyer la branche main et supprimer le commit en trop, pour commencer revenez sur la branche main (local).

Ils existent plusieurs solutions pour supprimer un commit, nous vous laissons essayer de trouvez par vous même, le but est de ne plus avoir le dernier commit du main.

4 - Rebase

Lorsqu'on travaille sur plusieurs branches en même temps, et que nos collaborateurs merge sur le master/main, il peut être nécessaire de récupérer leurs travaux comme des fonctions ou des fichiers spécifiques.

Dans ces cas là, il est déconseillé de récupérer les fichiers à la main car cela peut créer pleins de conflits lors du merge final de la branche.

C'est pour ça, qu'il existe une option qui s'appelle le rebase, cette fonctionnalité permet de remettre votre branche tout en haut d'une autre branche.

L'avantage du rebase comparé au merge habituel, c'est qu'au lieu de créer un nouveau commit et d'avoir une branche perpendiculaire en plein milieu de la liste des branches, on modifie directement le commit d'origine de la branche.

Voici une très bonne vidéo qui explique visuellement la différence entre les merges et les commit : https://www.youtube.com/watch?v=xot40u-_1FI

Testons ça maintenant :

  • Revenez sur votre main si ce n'est pas déjà fait
  • Créer une fonction dans le fichier ex02/main.c (Une fonction vide est suffisante pour cette exercice)
  • Commitez et pushez votre commit
  • Changez de branche (new-name)

Maintenant essayer de rebase la branche new-name à partir du main, un peu de documentation ici !

workshop-github-gitkraken's People

Contributors

slefeu avatar katsukumi avatar

workshop-github-gitkraken's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.