Vous êtes sur la page 1sur 33

Démarrer avec Git

logiciel de gestion de version

Pierre Rossel
HEAD-Genève 2013
Situations possibles

n Mon programme ne fonctionne plus.


q Comment puis-je revenir à une ancienne version ?
n Mon disque dur est mort.
q Ai-je vraiment perdu deux mois de code ?
n La version 2.0 de mon programme est en chantier et
je dois vite faire une correction sur la version 1.0.
q Comment être efficace ?
q Comment intégrer les corrections de la version 1.1 dans la
version 2.0 ?

novembre 18, 2013 Démarrer avec Git 2


Travail à plusieurs

n Comment travailler à plusieurs sur le code


source d'une application ? Sur les mêmes
fichiers ?
n Qui a écrit cette ligne de code qui provoque
un bug ?
n Qui a ajouté ce fichier ?
n Qu'est-ce qu'on avait changé dans le code
pour résoudre le bug #243 ?

novembre 18, 2013 Démarrer avec Git 3


Solution ?

n Toutes ces questions ont des réponses


possibles
n Une système de gestion de version est une
solution
n Git est une bonne solution

novembre 18, 2013 Démarrer avec Git 4


Utiliser Git avec le terminal

n Terminal
q Efficace
q Puissant
q Parfois la seule solution
sur un serveur
q Peu intuitif

novembre 18, 2013 Démarrer avec Git 5


Utiliser Git avec un GUI

n GUI (Graphical User


Interface)
q Facile à utiliser
q Assez intuitif
q Pas toujours complet
q Pas toujours disponible

novembre 18, 2013 Démarrer avec Git 6


Dépôt local

n Git crée et gère un dépôt local


q Généralement un dossier caché ".git"
q Contient tout l'historique des fichiers
q Peut contenir plusieurs branches

novembre 18, 2013 Démarrer avec Git 7


Init

n Commande "init"
q Crée un dépôt local
n SourceTree
q File | New | Create Repository
n Terminal
mkdir test
cd test
git init

novembre 18, 2013 Démarrer avec Git 8


Index

n Endroit temporaire où sont placés les fichiers


qui doivent être enregistrés dans le dépôt git
n Avant d'enregistrer des changements dans le
dépôt git, il faut d'abord les mettre dans
l'index
n Il existe des raccourcis pour automatiser
cette étape
Fichier nouveau ou modifié à Index à Dépôt git

novembre 18, 2013 Démarrer avec Git 9


Add

n Commande "add"
q Ajoute un fichier à l'index
n Nouveau fichier
n Fichier modifié
n SourceTree
q Bouton Add
n Terminal
git add hello.txt

novembre 18, 2013 Démarrer avec Git 10


Commit

n Command "commit"
q Enregistre dans le dépôt git les fichiers
préalablement préparés dans l'index
q Garde un message qui résume ce qui a changé
n SourceTree
q Bouton Commit
n Terminal
git commit –m"Fix bug #223"

novembre 18, 2013 Démarrer avec Git 11


Add et commit

.git

Workspace Repository
(mes fichiers) (dépôt)
Index

add commit

novembre 18, 2013 Démarrer avec Git 12


Exercice: créer un dépôt local
n Créer un dépôt git nommé "portfolio" (init)
n Créer un fichier html (votrePrénom.html)
<html>
<head>
<title>Prénom</title>
</head>
<body>
<h1>Prénom</h1>
</body>
</html>
n Ajouter le fichier à l'index (add)
n Committer le nouveau fichier (commit)
n Modifier le fichier (ajouter une phrase de description)
<h1>Prénom</h1>
<p>Une phrase pour me présenter</p>
n Commiter l'ajout (commit)
n Modifier le fichier (ajouter le nom de famille après le prénom)
n Commiter l'ajout (commit)

novembre 18, 2013 Démarrer avec Git 13


Voir l'historique

n Git garde une trace de chaque commit


n Git peut restaurer l'état des fichiers tels qu'ils étaient
lors d'un précédent commit
n Git permet de voir l'historique du projet ou d'un
fichier
n Chaque commit reçoit un nom
q ex: 6e3d1ab644e88b62fd8e9e4fe5104aafa8772432
n SourceTree
q Cliquer sur la branche "master"
n Terminal
git log

novembre 18, 2013 Démarrer avec Git 14


Dépôt distant

n Git peut se connecter à un ou plusieurs dépôt


distants (remote)
n Généralement un serveur git sur une autre
machine
n Intérêts
q Stockage décentralisé (sauvegarde)
q Facilite le partage du code (travail à plusieurs)

novembre 18, 2013 Démarrer avec Git 15


Travailler avec le remote

n Push
q Envoie les derniers commits sur le serveur remote
n Fetch
q Récupère les derniers commits depuis le serveur remote et
les stocke dans le dépôt local (dossier caché .git)
q Ne modifie pas les fichiers dans le dossier de travail
n Pull
q Fait d'abord un fetch
q Ensuite applique les dernières modifications sur les fichiers
dans le dossier de travail (merge)

novembre 18, 2013 Démarrer avec Git 16


Vue d'ensemble des commandes
principales
pull

fetch
checkout / merge

.git

Workspace Repository Remote


Index (dépôt) repository

add commit push

novembre 18, 2013 Démarrer avec Git 17


Bitbucket

n bitbucket.org dispose d'un serveur git


n Permet de créer des dépôts publics ou privés
n Permet de travailler à plusieurs
n Dispose d'outils annexes (wiki, bugtracker)
n Gratuit avec limites (max 5 users)
n Les limites peuvent être supprimées pour les
étudiants
n Autres solutions
q Github (gratuit pour les projets open-source)
q Propre serveur git (ex: alwaysdata)

novembre 18, 2013 Démarrer avec Git 18


Mettre un projet local sur Bitbucket

n Créer le projet sur Bitbucket


n Récupérer l'adresse du dépôt (URL)
q Avec SSH
n ssh://git@bitbucket.org/pierrerossel/portfolio.git
q Avec HTTP
n https://pierrerossel@bitbucket.org/pierrerossel/portfolio.git
n Ajouter le remote au dépôt local
q SourceTree
n Menu Repository | Add Remote
q Terminal
git remote add origin URL

novembre 18, 2013 Démarrer avec Git 19


Exercice: mettre le portfolio sur Bitbucket

n Sur bitbucket.org
q Créer un nouveau repository (ex-portfolio)
q Récupérer l'URL
n Dans le dépôt local
q Ajouter le remote Bitbucket au dépôt local
q Pousser les modifications sur Bitbucket (push)

novembre 18, 2013 Démarrer avec Git 20


Travailler à plusieurs

n Un projet existe déjà sur un dépôt git


n Clone
q crée un dépôt git local et connecte immédiatement
le remote
n SourceTree
q File | New | Clone Repository
n Terminal
git clone URL

novembre 18, 2013 Démarrer avec Git 21


Conflits
n Si plusieurs personnes modifient le même fichier au
même endroit
n Git ne peut pas savoir quelle version garder
n Les 2 versions sont dans le fichier local, encadrées
par des balises
n Editer le fichier et choisir la version à garder, ou
créer un mélange des deux versions.
n Enlever les marques de conflit
n Marquer le conflit comme résolu
n Committer
n Push

novembre 18, 2013 Démarrer avec Git 22


Exercice: à propos de nous

n Attendre les invitations bitbucket


n Cloner le dépôt en local
n Ajouter un fichier à votre nom selon le modèle (ou
copier celui de l'exercice précédent)
n Modifier le fichier index.html pour ajouter votre nom
n Committer les modifications
n Pousser les changements sur bitbucket
n Résoudre les éventuels conflits

novembre 18, 2013 Démarrer avec Git 23


Branches
n Branche par défaut: master
n Créer d'autres branches pour
q Séparer le développement et la production
q Développer une nouvelle fonctionnalité
q Tester une modification et revenir facilement en
arrière
q Maintenir plusieurs versions (1.x, 2.x)
q Corriger une version en production alors que la
version en développement n'est pas prête (hotfix)
q Préparer une version pour la production

novembre 18, 2013 Démarrer avec Git 24


Créer une branche

n Déterminer le commit parent


n SourceTree:
q Bouton Branch
n Terminal
git branch…

novembre 18, 2013 Démarrer avec Git 25


Changer de branche
n Pour travailler dans une autre branche
q Extrait les fichiers de la nouvelle branche dans le
workspace
q Faire un commit des fichiers modifiés dans la
branche actuelle avant de changer (ou un stash)
n SourceTree
q Sélectionner la branche
q Clic droit et Checkout (ou bouton checkout)
n Terminal
git checkout [commit ou branch name]

novembre 18, 2013 Démarrer avec Git 26


Merge

n Incorpore les changements (commits) d'une


autre branche dans la branche courante
n Les 2 branches doivent avoir un ancêtre
commun
n Git s'en sort généralement très bien
n Même si plusieurs personnes ont modifié le
même fichier

novembre 18, 2013 Démarrer avec Git 27


Branches – modèle simple

n 2 branches
q master
n version qui fonctionne
q develop
n version instable ou en
cours de développement

novembre 18, 2013 Démarrer avec Git 28


Modèle simple à 2 branches

n Développement dans la branche develop


q Créer la branche
n 1 seule fois
n Pour créer la branche
n À partir de la branche courante
git branch develop
q Changer de branche
git checkout develop

18.11.13 Démarrer avec Git 29


Modèle simple à 2 branches

n Travailler dans la branche


q Modifier les fichiers
q Commit
n Chaque fois qu’une étape est franchie
n Avec un commentaire qui décrit ce qui a été fait
n Autant de fois que nécessaire jusqu’à version sable
git commit
git commit
git commit

18.11.13 Démarrer avec Git 30


Modèle simple à 2 branches

n Mise en production d’une version stable


n Place les fichiers de la branche master dans le dossier
de travail
checkout master
n Incorpore tous les changements de la branche develop
dans la branche courante, depuis l’ancêtre commun
merge develop

18.11.13 Démarrer avec Git 31


Tag

n Etiqueter une version (tag)


n Permet d’identifier une version particulière
git tag v1.0
n Visible avec
git log --decorate

18.11.13 Démarrer avec Git 32


Branches - modèle plus complexe

n Branches
q master
q develop
q Feature branches
q Hotfixes branches
q Release branches
n voir
q A successful Git
branching model
q Bouton Git Flow dans
SourceTree

18.11.13 Démarrer avec Git 33

Vous aimerez peut-être aussi