Memento Git avancé

 0
 0
Tps de lecture estimé:4 minutes 4 secondes

Voici une liste des notions avancées utilisées par Git.
Ce fichier est un canevas qui s'étoffera au fur et à mesure de mes expérimentations sur cet outil et son éco système .

Références/Sources:

Git avancé

Workflows

  • ce sont des optimisation du fonctionnement de git sous forme de modèles
  • le plus utilisé est le modèle Git Flow

Git Flow

  • branches utilisées: master,develop,hotfix,release(test),feature (plusieurs branches)
    • master = environnement de production: Aucune modifications directe (commit).
    • develop = environnement de recette: centralise toutes les nouvelles fonctionnalités qui seront livrées dans la prochaine version. Eviter les modifications directe (commit).
    • feature = nouvelle fonctionnalité. Créée à partir de develop pour chaque nouvelle fonctionnalité. Une fois terminée, fusionner dans develop.
    • hotfix = correction de bug en production. Créée à partir de master. Une fois terminée, fusionner dans develop et dans master. Faire des modif minimales !
    • release = réalisation des tests avant livraison. Créée à partir de develop. Une fois terminée, fusionner dans develop et dans master.

en utilisant git

  • 1 créer la branche develop: `git branch develop
  • 2 développer UNE fonctionnalité:
    créer une branche de type feature (depuis develop): git checkout -b feature/[name] develop
  • 3 une fois le développement terminé, merger dans develop

    git checkout dev
    git merge feature/[name] --no-ff
    git branch -d feature/[name]
  • 4 préparer une nouvelle version en production
    créer une branche de type release (depuis develop): git checkout -b release/[name] develop
    tester la branche (et faire éventuellement des modifs mineures)
    merger dans develop et dans master

    git checkout dev
    git merge release/[version] --no-ff
    
    git checkout master
    git merge release/[version] --no-ff
    git tag [version]
    
    git branch -d release/[version]
  • 5 corriger un bug en production
    créer une branche de type hotfix (depuis master): git checkout -b hotfix/[name] master
    une fois le développement terminé, merger dans develop et dans master

    git checkout dev
    git merge hotfix/[name] --no-ff
    
    git checkout master
    git merge hotfix/[name] --no-ff
    git tag [version]
    
    git branch -d hotfix/[name]

en utilisant l'outil git flow

  • il doit être installé en plus de git: yay gitflow (Arch linux)
  • commandes de base:
    • initialiser Git et GitFlow dans un projet: git flow init
    • démarrer une fonctionnalité: git flow feature start [name]
    • terminer une fonctionnalité: git flow feature finish [name]
    • démarrer une release: git flow release start [version]
    • terminer une release: git flow release finish [name]
    • démarrer un hotfix: git flow hotfix start [version]
    • terminer un hotfix: git flow hotfix finish [name]

Divers

connexion SSH avec un dépot distant (exemple : gitlab.com)

  • créer une nouvelle paire de clés SSH (rsa): ssh-keygen -t rsa -b 4096 -C [email protected]
  • ajouter la clé au dépot distant
    • copier le contenu de la clé PUBLIQUE dans le presse-papier: xclip -sel clip > ~/.sh/id_rsa.pub
    • ajouter la clé en collant son contenu dans les paramètres du dépot
  • vérifier la connexion: ssh -T [email protected]

Supprimer des commits déjà Pushé

  git reset --hard [SHA]
  git clean -f -d
  git push -f

Synchroniser un dépot local Forké avec son parent

  • add the original project as a remote named 'upstream': git remote add --track [branche] upstream [git://github.com/upstreamname/projectname.git]
  • update the current branch with upstream: git fetch upstream;git merge [upstream/branche]

Configurer Beyond compare (Linux) comme outil de diff/merge

  • Diff: git config --global diff.tool bc3;git config --global difftool.bc3.trustExitCode true
  • Merge (Pro only): git config --global merge.tool bc3;git config --global mergetool.bc3.trustExitCode true

Comparer des fichiers provenant de deux branches différentes

en utilisant git diff
  • comparer le fichier d'une branche à une autre branche V1: git diff [branch1:file] [branch2:file]
    • exemple: git diff master:modules/gdscript/gdscript_tokenizer.h gdscript_format_updated:modules/gdscript/gdscript_tokenizer.cpp
  • comparer le fichier d'une branche à une autre branche V2: git diff [branch1name] [branch2name] [path/to/file]
  • comparer le fichier d'une branche à une autre branche V3: git diff [source_branch] [target_branch] -- [path/to/file]
  • comparer votre répertoire de travail actuel à une branche quelconque: git diff ..[someBranch] [path/to/file]
    • exemple: git diff ..master myfile.cs
en utilisant le "diff tool" configuré
  • comparer le fichier d'une branche à une autre branche V1: git difftool [branch1:file] [branch2:file]
    • exemple: git difftool master:modules/gdscript/gdscript_tokenizer.h gdscript_format_updated:modules/gdscript/gdscript_tokenizer.cpp
  • comparer le fichier d'une branche à une autre branche V2: git difftool [branch1name] [branch2name] [path/to/file]
  • comparer le fichier d'une branche à une autre branche V3: git difftool [source_branch] [target_branch] -- [path/to/file]
  • comparer votre répertoire de travail actuel à une branche quelconque: git difftool ..[someBranch] [path/to/file]
    • exemple: git difftool ..master myfile.cs

Article précédent Article suivant