Cet article fait partie d’une longue série en cours d’écriture consacrée à git.

Exporter le contenu d’un dépôt git

Vous avez besoin d’exporter le contenu de votre dépôt git, tout en ignorant la base de données contenue dans le dossier .git ? Voici une procédure toute simple à suivre.

D’abord, le lien vers la documentation officielle git archive.

Exporter le dépôt git à la svn export

Si vous connaissez subversion, svn export permet d’exporter le dossier de source sans le .svn. L’export se fait tout simplement dans un autre dossier. Voici l’équivalent git, utilisant un pipe et la commande tar.

cd $HOME/mon-depot-git/
mkdir $HOME/export-mon-depot-git/
git archive master | tar -x -C $HOME/export-mon-depot-git/

Exporter une archive tar

La plupart du temps, on souhaite exporter en tant qu’archive tar, le format par défaut.

cd $HOME/mon-depot-git/
git archive master --output=$HOME/export-mon-depot-git.tar

Exporter une archive tar bzipée ou gzipée

Pour compresser l’archive tar à la volée, on utilise bz2, gzip, ou autre…

git archive master | bzip2 > $HOME/export-mon-depot-git.tar.bz2
git archive master | gzip > $HOME/export-mon-depot-git.tar.gz

Exporter au format zip

Pour exporter une archive zip, on spécifie simplement le format d’archive.

git archive --format zip --output=$HOME/export-mon-depot-git.zip master

Exporter une révision, tag ou branche

On pourra remplacer master dans les exemples précédents par le nom d’un tag, d’une branche, ou encore d’un id de commit.

git archive --output=$HOME/export-mon-depot-git.tar 2.0.1
git archive --output=$HOME/export-mon-depot-git.tar feature/ma-branche
git archive --output=$HOME/export-mon-depot-git.tar b9c8c1b75471c3af17e1b08e4e2401334643ddf7

Ajouter un préfixe

Pour exporter avec un préfixe de dossier, par exemple, le nom du logiciel et son numéro de version, on pourra ajouter l’option --prefix aux exemples précédents.

git archive --prefix=mon-logiciel-v2.0.1/ --output=$HOME/export-mon-depot-git.tar 2.0.1

Ignorer certains fichiers lors de l’export

Afin de ne pas exporter le fichier .gitignore, par exemple, on pourra ajouter un fichier .gitattributes à la racine du dépôt et y mettre le contenu suivant.

.gitattributes export-ignore
.gitignore export-ignore

Notez que ce fichier doit être commité pour être pris en compte par la commande git archive.