git utilisation quotidienne

Post on 24-Jun-2015

570 Views

Category:

Internet

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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”

Résumé

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

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

top related