DVCS - Git

Gestion des versions

ENSET Mohammedia

Aziz DAAIF

Plan

  1. Partie I - Généralités
    • DVCS vs CVCS (Distributed vs Centralized Version Control)
    • Surveiller les changements de fichiers avec GIT
    • Travailler en équipe avec GIT
  2. Partie II - Git en local
    • Installer Git
    • Versionner les fichiers et organiser son travail
  3. Partie III - Git en équipe
    • Le dépot central. Ex Github

DVCS vs CVCS

  • CVCS -> Centralized Version Control System
    • Ex. : Subversion, Perforce
    • Les modifs se font sur le dépôt central.
    • L'utilisateur doit être connecté.
  • DVCS -> Distributed Version Control System
    • Ex. : Git, Mercurial
    • Chaque utilisateur à une copie du dépôt central
    • Les utilisateurs travaillent indépendement les uns des autres

Git - Workflow local

Git gère les changements en trois étapes :

Git - Workflow local


  • Un fichier du Working Directory peut être surveillé ou non.
  • Pour le surveiller, il faut l'ajouter (add) à la Staging Area.
  • Quand on juge que les modifications apportées sont valables, on le commit dans le Repository
  • La suite des commits constitue l'historique des versions.

Git - Branch


  • Chaque Repository contient une branche principale appelée master
  • Elle représente la suite des commits (l'historique des versions)

Git - Branch

  • Pour ajouter une nouvelle fonctionnalité, on crée une nouvelle branche à partir de HEAD

Git - Branch

  • Quand la fonctionnalité est jugée correcte, on fusionne les deux branches.

Git - Travail en équipe.

Git - Travail en équipe.

  • Chaque utilisateur clone ou se synchronise avec le dépôt distant.
  • Un ou plusieurs utilisateurs travaille (nt) sur une branche spécifique.
  • Quand l'utilisateur juge son travail correct. Il pousse sa branche dans le dépôt central et soumet une requête de vérification (pull request) à ses collègues.
  • Lorsque le travail est jugé satisfaisant, la branche spécifique est fusionné avec la branche principale (master)

Git en pratique

Une seule commande git


      $ git --version
      git version 2.9.0.windows.1
      $ git help
      usage: git [--version] [--help] [-C ] [-c name=value]
           [--exec-path[=]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=] [--work-tree=] [--namespace=]
            []

      These are common Git commands used in various situations:

      start a working area (see also: git help tutorial)
      clone      Clone a repository into a new directory
      init       Create an empty Git repository or reinitialize ...
      ...
                    

Git - Les bases

Configuration de l'utilisateur


    $ git config --global user.name "aziz daaif"
    $ git config --global user.email "a@daaif.net"
                    

Création d'un répertoire. (ca n'à rien à voir avec git)


    $ mkdir mon_dossier    # création
    $ cd mon_dossier       # Entrer dans le répertoire mon_dossier
                    

Initialiser un dépôt local.


    $ git init        # Cette commande va créer le dossier caché .git
                    

git status

  • La commande git status informe sur l'état du Working Directory et de la Staging Area

git status

  • Créons le fichier index.html dans le dossier mon_dossier et exécutons git status à nouveau.

git add .

  • la commande git add index.html va ajouter le fichier dans la Staging Area

git commit ...

  • la commande git commit -m "message" crée un instantané de l'état de la Staging Area. Le commit est l'unité historique du versionning.

Voir l'historique

  • la commande git log permet de voir l'historique des commits

Branches du dépôt

  • la commande git branch permet de voir les branches du dépôt.
  • la commande git branch dev-1 ajoute la branche dev-1.

Travailler dans dev-1

  • la commande git checkout dev-1 rend la branche dev-1 active.

Le fichier index.html

Modifions index.html

git status

add et commit

Retour à master

index.html

Fusion de dev-1 avec master

index.html

Dépôt central

Cas de github

  • Aller sur https://github.com
  • Créer un compte et loggez-vous
  • Ajouter un nouveau Repository

Ajout de repository

Apres

Copier l'adresse du repo

Revenir sur le terminal

Synchronisez avel pull

Synchronisez le dépôt local avec le dépôt distant.

Deux historiques différents rend GIT confus.

Synchronisez avel pull

Autoriser git à merger deux historiques différents.

Envoyer le tout sur Github

La commande push permet d'envoyer une branche sur le dépôt central.

Allez voir sur Github

A partir d'un autre PC

Je veux continuer à travailler sur mon projet à partir de mon PC de bureau.

Facile. Je copie le lien de mon projet à partir de github .

git clone

Je reviens sur mon terminal et je clone le repo.

.

.

git branch

J'ajoute une branche dev-style et je switche dessus.

.

J'ajoute un fichier de style

.

.

J'affiche le status

.

A la staging area et je commit

.

Coup d'oeil sur l'historique

.

.

Différence entre master et dev-style

.

Je pousse dev-style sur github

.

Je vérifie sur github

.

Je bascule sur la branche dev-style

.

Pull request then merge.

.