sur le serveur
git init --bare projet
sur le client
git clone root@2i.raphaelpiccolo.com:/root/projet projet
git clone root@2i.raphaelpiccolo.com:/root/projet projet2
git clone root@2i.raphaelpiccolo.com:/root/projet projet3
chacun des dossier projet* font environ 50ko
ajouter des fichiers de merde sur le 1er client
cd projet
git add v.mp4
git commit -m projet
git push
projet fait maintenant 70mo.
on peut puller sur le 2e git
cd projet2
git pull
projet2 fait maintenant 70mo aussi.
cd projet
git filter-branch -f --index-filter 'git rm -rf --cached --ignore-unmatch *.mp4' --prune-empty -- --all
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --aggressive --prune=now
projet fait maintenant 50ko.
cd projet
git push origin master --force
puller sur l'autre client
cd projet2
git pull
le dossier n'a réduit de taille qu'a moitié. (35mo) car la video est toujours dans l'archive git locale mais plus dans le dossier. il faut relancer les commandes de nettoyage :
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --aggressive --prune=now
projet2 fait maintenant 50ko.
par contre sur projet3 la video n'avait pas encore été pullée
cd projet3
git pull
projet3 fait maintenant 50ko.
une autre technique est de cloner le repo une fois le 1er clean effectué, mais attention à bien backup et remettre tous les fichiers non gérés par git : config, uploads, etc
rm -rf projet2
git clone root@2i.raphaelpiccolo.com:/root/projet projet2