Upload
sylvain-witmeyer
View
571
Download
0
Embed Size (px)
DESCRIPTION
Formation sur l'utilisation quotidienne de GIT. Découvrez les principes de GIT ainsi que les commandes de base.
Citation preview
GitUtilisation quotidienne
Sylvain Witmeyer
À 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
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…
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)
Images issues de http://fr.openclassrooms.com/
Un logiciel de versionning distribué
Centralisé Distribué Dans la vraie vie
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é
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
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
Git status
Affiche l’état du workspace et du staging area
Git add
Ajoute les fichiers que l’on veut versionner dans le staging area
Les fichiers ne sont pas encore sauvegardés
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
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
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
Git log
donne l’historique des commits
Git tag
Attribue une étiquette à un commit
Permet de revenir facilement à une version précise
Git push
Envoie ses derniers commits locaux
-u upstream : lie les branches distantes aux branches locales
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
Git rebase
Réécrit l’historique des commits
Supprime les anciens commits
Merge
Rebase
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
Git revert
recrée des commits pour pour revenir jusqu’à un commit particulier
Git diff
Affiche les différences entre 2 commits, 2 branches, entre le dernier commit et le workspace etc ...
Git stash
Stock temporairement les modifications du staging area sans créer de commit
Possibilité d’avoir plusieurs “stash”
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
.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 !!!
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
.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
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
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
Questions ?
@switmeyer sylwit sylvainwitmeyer