Maîtriser GIT – Formation à l'outil de gestion de version – Pourquoi choisir GIT ?



Maîtriser GIT – Formation à l'outil de gestion de version – Pourquoi choisir GIT ?

0 0


FormationGit

Slides de formation à l'outil GIT

On Github reivon / FormationGit

Maîtriser GIT

Formation à l'outil de gestion de version

Créé par Tony MEMBOT via l'API de présentation Reveal.js

Maîtriser GIT

  • Pourquoi choisir GIT ?
  • Mise en place
  • Les commandes de bases
  • Les commandes avancés
  • Les commandes "experts"
  • Le Git Flow
  • Les pull/merge request
  • Ligne de commande ou IDE ?

Pourquoi choisir GIT ?

Il était une fois l'histoire de GIT

  • 2002 : Linus Torvalds utilise BitKeeper pour Linux, logiciel propriétaire.
  • Début 2005 : BitKeeper arrête sa version gratuite.
  • Avril 2005 : Linus Torvald crée GIT, répondant à ses besoins.
    • Système de fichier évolué
    • Décentralisé
    • Libre

Centralisé VS décentralisé

  • Tout l'historique est présent lors d'un clone, pas de besoin de remote.
  • Respecte l'éthique du libre : on peut cloner et proposer des pull request.

Les ingrédients de GIT

  • Tout est SHA1 : Identifiant unique de chaque objet :
    • Blob : contenu des fichiers
    • Tree : répertoire de blob et/ou autre tree
    • Commit :
      • Un arbre
      • 0 ou N commits parents
      • Un message de description
    • Tag

Particularités

  • Tout est ajout (même les suppressions de fichiers / dossiers)
  • Les liens / commit déférencés sont automatiquement supprimés

Git est optimiser pour ...

  • être rapide
  • être robute
  • gérer un grand nombre de fichier
  • réaliser des développements distribués
  • rendre trivial la gestion des branches et des merge
  • sa compatibilité : SVN / CVS / HTTP / SSH / ...

... mais l'est moins pour

  • gérer les gros fichiers binaires
  • son côté non "user friendly" aux premiers abords

Mise en place de GIT

Installation

  • Linux
    sudo apt-get install git
  • Windows (émulation)
    https://git-scm.com/

Paramétrer GIT

Locale (repository)
									git config --local
								
Global (user)
									git config --global
								
Système (tout users)
									git config --system
								

Identifiez vous !

git config --global user.name t.membot

git config --global user.email tmembot@gmail.com
                        

Get Started

git init
touch readme.txt
git status
git add readme.txt
git status
git commit -m "My first commit !"
git status
git log
                        

Maîtriser les bases

(init) Initialiser un nouveau repo

							git init
						
  • Permet d'initialiser un repository vierge.
  • Crée un dossier ".git"
  • Initialise une branche nommée "master"
  • Peut être créé dans un dossier contenant déjà des dossiers/fichiers

Dossier .git

  • Seulement présent à la racine du projet
  • Contient :
    • config : Fichiers de configuration (style .ini)
    • objects/* : Repository des objets
    • refs/heads/* : Branches
    • refs/tags/* : Tags
    • logs/* : Logs
    • refs/remotes/* : Tracking des remotes
    • index : le "cache index" (staging)
    • HEAD : pointeur sur un commit de la branche courante (parent du prochain commit)

Les options intéressantes

  • Options :
    • --bare : Création d'un repository sans arbre de travail.
    • --shared : Partager son repository.

Note : Pour obtenir de l'aide sur une commande

git [command] --help

La zone de staging

Git status

							git status
						

Git add

							git add [filename]
						
  • Permet d'ajouter des fichiers dans la zone d'index (staging)
  • Permet d'ajouter des portions de code dans la zone d'index
  • Ignore les fichiers / dossiers du .gitignore

Les options intéressantes

  • Options :
    • -A | --all : Ajout de toutes les modifications d'un seul coup
    • -p | --patch : Ajout partiel de code dans un fichier
    • -f : Force l'ajout d'un fichier contenu dans le .gitignore

Git checkout

							git checkout [filename]
						

Git commit

Les options intéressantes

  • Options :

Git reset

Les options intéressantes

  • Options :

Git pull

Les options intéressantes

  • Options :

Git diff

Les options intéressantes

  • Options :

Git revert

Les options intéressantes

  • Options :

Git clean

Les options intéressantes

  • Options :

Explorons les repos distants

Git clone

Commande permettant de dupliquer un repository distant.

C'est la branche par défaut (généralement nommée master) qui est récupéré

https://git-scm.com/docs/git-clone

SSH ou HTTPS ?

Git checkout

Git push

Git fetch

GIT ignore

  • Git ignore
  • Git ignore global (dans le fichier, partie core : excludesfile = ~/.gitignore_global)
  • www.gitignore.io

Les commandes avancées

  • branch
  • stash
  • merge
  • rebase
  • tag
  • mv
  • rm
  • log ">

Les commandes "experts"

  • blame
  • bisect
  • archive
  • gitk
  • cherry-pick

Git flow

Ligne de commande ou IDE ?

Allons plus loin

                        git config --global alias.logall "log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white) - %an%C(reset) %C(bold yellow)%d%C(reset)' --all"
                        git config --global alias.wdiff "diff --word-diff"
                    

[color] ui = auto

Maîtriser GIT Formation à l'outil de gestion de version Créé par Tony MEMBOT via l'API de présentation Reveal.js