GIT pour les gens pressés

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

Liens :

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>