Git utilisation quotidienne

30
Git Utilisation quotidienne Sylvain Witmeyer

description

Formation sur l'utilisation quotidienne de GIT. Découvrez les principes de GIT ainsi que les commandes de base.

Transcript of Git utilisation quotidienne

Page 1: Git   utilisation quotidienne

GitUtilisation quotidienne

Sylvain Witmeyer

Page 2: Git   utilisation quotidienne

À qui s’adresse cette formation ?

Ceux qui utilisent Git quotidiennement

Ceux qui veulent mieux comprendre comment fonctionne Git

Ceux qui veulent comprendre les commandes de base

Page 3: Git   utilisation quotidienne

Git, ça sert à quoi ?

D’après le site officiel http://git-scm.com/

A VCS (Version Control System) allows you to: ● revert files back to a previous state, ● revert the entire project back to a previous state, ● review changes made over time, ● see who last modified something that might be causing a problem, ● who introduced an issue and when, ● and more…

Page 4: Git   utilisation quotidienne

Qu’est ce qu’on peut versionner

● du code source● des fichiers de configuration● des documents textes● n’importe quel document non binaire

(zip, mp3, avi)

Page 5: Git   utilisation quotidienne

Images issues de http://fr.openclassrooms.com/

Un logiciel de versionning distribué

Centralisé Distribué Dans la vraie vie

Page 6: Git   utilisation quotidienne

Architecture de GitWorking directory / Workspacecontient les fichiers sur lesquels je travaille

Staging area / Indexzone temporaire de préparation avant de

commiter

Repositorycontient tous les fichiers, l’historique et la

configuration du projet

Commitc’est un snapshot - sauvegarde d’un état de

plusieurs fichiers à un moment donné

Page 7: Git   utilisation quotidienne

Git init

Transforme un dossier en dépôt Git localement

Crée un sous-dossier .git contenant la configuration du dépôt

TOUT le projet git sera contenu dans ce dossier

Page 8: Git   utilisation quotidienne

Git clone

Récupère un dépôt distant

Initialise le dépôt en local

Mémorise l’adresse du dépôt distant

Page 9: Git   utilisation quotidienne

Git status

Affiche l’état du workspace et du staging area

Page 10: Git   utilisation quotidienne

Git add

Ajoute les fichiers que l’on veut versionner dans le staging area

Les fichiers ne sont pas encore sauvegardés

Page 11: Git   utilisation quotidienne

Git commitCréé un “snapshot”

Ajoute toutes les modifications dans l’historique

Identifié par un code unique (sha1)non séquentiel comme SVN

Le message doit indiquer ce que contient le commit

--amend : modifie le dernier commit

Page 12: Git   utilisation quotidienne

Git branchUne branche permet de

développer/tester de nouvelles fonctions sans rien casser

Master est la branche principale. Elle devrait toujours contenir un code fonctionnel.

Crée une nouvelle branche “dev” contenant tout l’historique de la branche master

> git checkout -b dev

Page 13: Git   utilisation quotidienne

Git checkout

déplace le pointeur HEAD

Permet de se déplacer entre les différentes branches

Permet aussi de se déplacer dans l’historique des commits

> git checkout 92b1325

Page 14: Git   utilisation quotidienne

Git log

donne l’historique des commits

Page 15: Git   utilisation quotidienne

Git tag

Attribue une étiquette à un commit

Permet de revenir facilement à une version précise

Page 16: Git   utilisation quotidienne

Git push

Envoie ses derniers commits locaux

-u upstream : lie les branches distantes aux branches locales

Page 17: Git   utilisation quotidienne

Git fetch + Git merge = Git Pull

Récupère les derniers commits distants

Intègre ces commits dans le dépôt local

>git pull origin master

Page 18: Git   utilisation quotidienne

Git rebase

Réécrit l’historique des commits

Supprime les anciens commits

Merge

Rebase

Page 19: Git   utilisation quotidienne

Git reset

Permet de repositionner HEAD sur des anciens commits

--soft : index et working tree inchangé

--mixed : index RAZ et working tree inchangé (défaut)

--hard : index et working tree RAZ

Page 20: Git   utilisation quotidienne

Git revert

recrée des commits pour pour revenir jusqu’à un commit particulier

Page 21: Git   utilisation quotidienne

Git diff

Affiche les différences entre 2 commits, 2 branches, entre le dernier commit et le workspace etc ...

Page 22: Git   utilisation quotidienne

Git stash

Stock temporairement les modifications du staging area sans créer de commit

Possibilité d’avoir plusieurs “stash”

Page 23: Git   utilisation quotidienne

Résumé

Image issue de http://nbviewer.ipyhton.org

Page 24: Git   utilisation quotidienne

Gérer les conflits

Impossible de faire un push si des fichiers distants ont divergé du dépôt local

On traite toujours les conflits en local et on commit

git pull > correction des conflits > git push

Page 25: Git   utilisation quotidienne

.gitconfig

Fichier surchargeable définissant les configurations de Git

● Global (~/.gitconfig): Définit les configurations globales pour un utilisateur

● System (/etc/.gitconfig): Peu utilisé. Contient les configurations globales pour tous les

utilisateurs de l’ordinateur

● Local (~/Projects/this-project/.gitconfig): Au niveau du dépôt. Contient les configurations

propres au dépôt. Si ce fichier est commité, il impactera tous les utilisateurs qui

travailleront sur ce dépôt.

!!! Plein d’exemples dans les gists !!!

Page 26: Git   utilisation quotidienne

HEAD - origin - master

HEAD : pointeur sur le dernier commit

Origin : Dépôt distant par défaut

Master : Branche principale par défaut

HEAD^ = HEAD~1 : dernier commit

HEAD~2 : avant dernier commit

Page 27: Git   utilisation quotidienne

.gitignore

Contient les fichiers et les chemins qu’il ne faut pas versionnerlogs, caches, config locales, les fichiers temporaires

#eclipse

.buildpath

.project

.settings

.externalToolBuilders

application/config/config.user.ini

composer.phar

caches/*

*~

*.DS_Store

!caches/README

Page 28: Git   utilisation quotidienne

Fork et Pull Request (PR)

Pas de droits en écriture sur des dépôts officiels

Fork = dupliquer un dépôt officiel pour pouvoir écrire dessus

Pull Request = proposer au propriétaire du dépôt officiel une correction/amélioration depuis notre dépôt fork

Le propriétaire peut “merger” simplement notre patch

Page 29: Git   utilisation quotidienne

Pour découvrir git

https://try.github.io/

http://rogerdudler.github.io/git-guide/index.fr.html

http://pcottle.github.io/learnGitBranching/

pour toutes les commandes : man git-xxx

Page 30: Git   utilisation quotidienne

Questions ?

@switmeyer sylwit sylvainwitmeyer