1. Initialisation
Création du dépôt local:
mkdir MyProject cd MyProject git init git config --global user.email "dave@null.com" git config --global user.name "Dave Null"
Ajout des fichiers:
touch wrop.c wrop.h git add wrop.c git add wrop.h
2. Gestion des validations (commit)
Validez une modification :
git commit [-a] -m"commentaire de validation"
Ajouter un fichier pour le prochain commit :
git stage wrop.c
Annulez une validation:
Sans modifier les fichiers sources et sans supprimer le suivi des derniers fichiers ajoutés
git reset --soft HEAD^
Sans modifier les fichiers sources et en supprimant le suivi des derniers fichiers ajoutés
git reset HEAD^
Avec retour des fichiers à l’état initial:
git reset --hard HEAD^
Restaurez le projet:
Depuis la dernière version validée:
git checkout .
Restaurez un fichier depuis la dernière version validée
git checkout wrop.c
3. Gestion de TAGs
Ajout d’un tag:
git tag v1.0
Suppression d’un tag:
git tag -d v1.0
Attention, le tag n’est supprimé que localement: pensez à le supprimer sur le dépôt distant si besoin.
Ajout de la version du TAG dans le code source:
Par exemple, en C: modifiez le Makefile avec les lignes suivantes:
GIT_VERSION = $(shell git describe --tags) GIT_YEAR = $(shell git log -1 --format=%cd | cut -d' ' -f5) CFLAGS += -DVERSION="$(GIT_VERSION)" CFLAGS += -DYEAR="$(GIT_YEAR)"
On peut à présent utiliser les variables VERSION
et YEAR
dans le code source. Exemple:
void version(void) { printf("%s : %s - %sn", argc[0], VERSION, YEAR); }
4. Gestion des logs
Lister le log d’un projet:
git log
Lister le log d’un fichier:
git log fichier
Modifiez le dernier message de commit:
git commit --amend
5. Utilisation des sous-modules (submodules)
Les sous-modules permettent d’intégrer d’autres dépôts dans le dépôt principal (typiquement des librairies). Il convient de s’assurer de la pérennité de leur source.
Ajout d’un sous-module
git submodule add https://github.com/tartempion/helloworld.git git commit -m "Ajout du module helloworld de tartempion" git push
Mise à jour d’un sous-module
cd monsousmodule git checkout master git pull git checkout v2.0 cd - git commit monsousmodule -m "Update de monsousmodule vers v2.0" git push
Récupération des sous-modules lors d’un clone
Lors du clone d’un projet qui utilise des sous-modules, ceux-ci ne sont pas automatiquement récupérés.
git clone https://github.com/moi/monprojet.git cd monprojet git submodule init git submodule update
La même chose en une seule ligne de commande
git clone --recursive https://github.com/moi/monprojet.git
6. Maintenir un fork
Pour mettre à jour un dépôt cloné après une « pull request »: ajoutez le dépôt original comme source principale:
git remote add upstream git@github.com:foo/bar.git
Récupérez les dernières mise à jour:
git fetch upstream
Intégrez les changements:
git merge upstream/master
Renvoyez ensuite ces mises à jour vers votre clone:
git push