Fonctionnement et workflow 1 au quotidien Fonctionnement et workflow Cyrille Pontvieux Ingénieur Objet Direct/Viseo Licence : CC-by-sa / GFDL
Sommaire Avantages Nœuds, branches, tags Zones de travail Commandes principales Workflows Outils / Config
Avantages de git
Avantages de git Flexibilité du workflow Création de branches facile et rapide Merge et Back-port « Tout » se fait localement Rapidité Décentralisé Populaire (documentation, aide)
Nœuds, branches et tags
Nœuds, branches et tags Git gère du contenu, pas des fichiers Tout tourne autour des commits (nœuds), qui sont référencés par une clé de hashage unique au dépôt (sha1) Un tag est une référence sur un sha1, comme un alias Une branche est comme un tag, mais elle se déplace avec le commit fils.
Commit Changeset (ensemble de changements effectués sur des fichiers) Un ou plusieurs commits parents Une date Un auteur Le sha1 d'un commit change dès qu'un de ces éléments change
Branches et tags
Zones de travail 5 zones distinctes 4 locales, 1 distante Commandes pour passer d'une zone à l'autre
Workflow et zones de travail Index/Stage Workspace Workspace Dépôt Local Stash Dépôt Distant
Commandes principales init add rm commit push fetch merge rebase stash checkout branch tag
Commandes principales (1/2) init : création d'un dépôt add/rm : ajoute ou retire les modifications dans l'index commit : crée un commit local à partir de l'index push : synchronise l'arbre local vers l'arbre distant fetch (et pull) : synchronise l'arbre distant vers l'arbre local
Commandes principales (2/2) merge : crée un commit ayant deux parents, réalisant une fusion de branches rebase : change la base (le commit parent) d'un ensemble de commits stash : pousse les modifications locales (workspace + index) dans une zone tampon (ou les ressort) checkout : place le workspace sur une branche ou un tag donné branch : crée une branche à partir de la branche courante tag : crée un tag à partir de la branche courante
Merge Un merge crée, par défaut, un nouveau commit de fusion, un nœud Ce nœud a 2 parents, les têtes des branches fusionnées On merge une branche sur la branche actuelle On peut abandonner un merge à tout moment pour recommencer Utiliser git mergetool pour s'aider à fusionner.
Rebase Un rebase permet de changer le commit parent d'un commit, de changer sa base Cette opération doit être évitées sur des commits déjà publiés dans le dépôt distant (changements des sha1) Cela permet : De réorganiser l'ordre des commits locaux D'en fusionner ou supprimer certains De changer le message de commit De rejouer les commits d'une branche sur une autre
Pull et Push pull permet de rapatrier sur son workspace les changement réalisées sur le dépôt distant pull = fetch + merge ou fetch + rebase (selon configuration) push permet de publier depuis le dépôt local sur le dépôt distant Attention push sans argument pousse toutes les branches locales.
Workflows
Workflows
Workflows
Outils / Configuration
Pour ne pas être perdu, un bon prompt est important : Se laisser aider Pour ne pas être perdu, un bon prompt est important : Lisez ce que vous dit git, souvent la commande que vous devrez taper est indiquée. git status, merge, rebase vous indique comment modifier l'index, continuer ou abandonner. Utilisez très souvent git status, et gitk (ou gitg). Cela va grandement vous aidez à comprendre ce qui est réalisé.
Outils gitk et gitg gitdaemon, gitlab, gitolite, gitosis svn2git (pour migrer depuis subversion) egit et autres greffons pour IDE une ligne de commande avec un bon prompt !
Configuration Dans votre home se trouve un fichier caché .gitconfig permettant de configurer Git : créer des alias ajouter de la couleur configurer l'éditeur de conflit par défaut modifier votre nom et email pour les contributions etc
Configuration $ git config --global -e [branch] autosetuprebase = always [color] ui = true [merge] tool = meld [mergetool] prompt = false [alias] st = status ci = commit co = checkout br = branch unmerged = !git ls-files -u|cut -f2|sort -u untracked = !git ls-files -o --exclude- standard|sort -u
Couleur : http://dl.free.fr/rPggD2mKm Ressources intéressantes Graphe et commandes autour du workflow : http://www.ndpsoftware.com/git-cheatsheet.html Cheat Sheet : Couleur : http://dl.free.fr/rPggD2mKm N&B : http://dl.free.fr/pcFIkVBUo
2626 Questions / Réponses