Quelles sont les lunettes de prescription non http://belgiquepharmacie.be/ Unie de liberté de santé oxford

Cela fait plus d’un an et demi que j’utilise Git dans mes environnements de travail personnel et professionnel. Jamais je ne l’échangerai contre SVN ! Oups, je m’égare ;-)

Git c’est bien, mais encore faut-il retenir son nombre croissant de commandes pour l’utiliser au mieux. Ce billet va être le premier d’une série qui va m’aider à mettre sur “papier” les commandes qui me sont le plus utiles.

Liste des commandes utiles

  1. Éditer le commentaire du dernier commit
  2. Supprimer une branche distante
  3. Supprimer un tag du repository distant
  4. Compter le nombre de commits par utilisateur
  5. Commiter sous une autre identité
  6. Antidater un commit
  7. Abandonner le suivi de fichiers
  8. Copier les fichiers inconnus de Git en dehors du répertoire de travail
  9. Supprimer les fichiers inconnus de Git
  10. Exporter son projet dans une archive ZIP ou TAR.GZ

Éditer le commentaire du dernier commit

Une commande qui se passe d’explications.

$ git commit --amend -m "Le nouveau commentaire."

Edit :
Comme le précise Jérémy dans les commentaires, cette commande n’est à utiliser que sur un commit qui n’a pas été diffusé sur un autre repository. Autrement, cela casserait l’historique et des divergences peuvent apparaître.

Supprimer une branche distante

Effacer une branche du dépôt distant s’effectue de la même manière que si vous la publiez à l’aide de la commande git push, mais en précédant le nom de la branche d’un double point.

$ git push origin :ma_branche

Supprimer un tag du repository distant

La commande git push --tags ne pousse pas les tags supprimés localement. Afin de supprimer un tag sur le serveur distant, il faut reprendre la syntaxe de suppression d’une branche :

$ git push origin :my_tag

Il est également possible d’utiliser la commande git tag et son flag -d :

$ git tag -d my_tag

Compter le nombre de commits par utilisateur

Avec git shortlog et ses flags -n et -s on obtient la sortie suivante pour le dépôt du framework PHP Pluf :

git shortlog -sn
   163  Loic d'Anterroches
     4  Jürgen Hörmann
     2  Mehdi Kabab
     1  Baptiste Durand-Bret
     1  Jakub Vitak

Ajoutez l’option -e pour afficher les adresses e-mails.

Commiter sous une autre identité

Un contributeur vous a envoyé un patch et vous souhaitez lui attribuer le commit1 ? Le flag --author est là pour ça :

$ git commit --author "Prénom Nom <email@address.com>"

Antidater un commit

Très pratique pour maintenir à jour son historique de commits, la définition de la variable GIT_AUTHOR_DATE permet de préciser la date et heure du commit.

$ GIT_AUTHOR_DATE="2009-11-26 08:32 +100" git commit -m "Un commit antidaté."

Abandonner le suivi de fichiers

Lors d’une phase de débogage, il est généralement peu utile de suivre les modifications de certains fichiers. La commande git update-index et son flag --assume-unchanged va permettre d’ignorer les changements du ou des fichiers précisés.

$ git update-index --assume-unchanged README.md

Pour revenir à la normale, utilisez le flag --no-assume-unchanged :

$ git update-index --no-assume-unchanged README.md

Copier les fichiers inconnus de Git en dehors du répertoire de travail

Sous Mac OS X2 la commande est :

$ git ls-files --others --exclude-standard | cpio -pmd /chemin/de/destination

Retirez l’option --exclude-standard si vous désirez exporter les fichiers ignorés par Git.

Supprimer les fichiers inconnus de Git

Il m’arrive de créer des fichiers qui ne seront finalement pas ajoutés à l’index de ma copie locale. Ces fichiers apparaissent donc inlassablement dans la liste des fichiers untracked. Au lieu de les supprimer manuellement, je charge Git de le faire :

$ git clean -n -d <path>

Ici, la commande git clean ne va rien supprimer. En effet, le flag -n réalise un dry run pour lister les fichiers et répertoires concernés par le nettoyage du répertoire de travail, ou du chemin <path> si ce dernier est précisé.

Si vous souhaitez supprimer uniquement les fichiers et conserver les répertoires vides, enlevez l’option -d.

Ajoutez le flag -x pour inclure les fichiers ignorés par Git (cf. le fichier .gitignore). Pour ne supprimer que les fichiers ignorés, optez pour l’option -X.

Dernière astuce, tant que l’option clean.requireForce n’est pas définie à false dans votre fichier de configuration, Git contraindra git clean à ne fonctionner qu’avec les flags -n et -f. Autrement dit, soit vous réalisez un test dry run, soit vous forcez l’action du nettoyage de votre arbre de travail. Et c’est une bonne chose, personne n’est à l’abri d’une erreur !

Exporter son projet dans une archive ZIP ou TAR.GZ

Si vous souhaitez fournir une archive d’une version précise de votre projet, git archive va pouvoir vous aider. En considérant que la version visée est marquée par le tag 1.0 :

$ git archive --format=zip --prefix=mon_projet-1.0/ -9 1.0 > /chemin/de/destination/mon-projet-1.0.zip

Détail sur les options :

  • --format pour spécifier le format de l’archive. git archive --list pour connaître la liste des formats supportés.
  • --prefix va préfixer tous les noms de fichiers et dossiers. N’oubliez pas le slash terminal si vous souhaitez regrouper les documents dans un dossier.
  • -9 est une option spécifique du format d’exportation ZIP. De 0 à 9, il détermine le niveau de compression.
  • 1.0 est le nom du tag. Vous pouvez également exporter des branches, le HEAD et autres tree-ish.
  • pour finir on redirige le tout dans un fichier.

Pour exporter les fichiers contenu dans le répertoire d’une branche donnée la commande devient :

$ git archive --format=zip --prefix=mon_projet-dev/ -9 dev:src/ > /chemin/de/destination/mon_projet-dev.zip

Enfin, l’export au format TAR.GZ se fait de la manière suivante :

$ git archive --format=tar --prefix=mon_projet-1.0/ 1.0 | gzip > /chemin/de/destination/mon-projet-1.0.tar.gz

Notes

  1. une bonne pratique a encourager ! 

  2. si la commande cpio fonctionne différemment sur d’autres OS, merci de me le signaler en commentaire. Je mettrai à jour en conséquence le snippet. 

publicité (chargement)

6 réponses pour Git : 10 commandes utiles

  1. Pour autant que je puisse le dire, git ammendn’existe pas. Je connaissais git commit --amend -m "nouveau message"

    Il faut aussi prendre garde à ne pas modifier un commit qui aurait été envoyé sur un autre repository, car ça crée des divergences et casse l’historique.

  2. piouPiouM dit :

    Oups, il s’agissait d’un de mes alias (avec une faute d’orthographe en prime). C’est corrigé, merci !

  3. symio dit :

    git archive permet aussi de déployer une application :

    git archive master | tar -x -C / (il faut que le répertoire existe)

  4. […] 10 trucs et astuces à garder au chaud quand on travail sous Git http://pioupioum.fr/developpement/git-10-commandes-utiles.html […]

  5. Californium dit :

    Merci pour l’info, je cherchais le nombre de commits par utilisateur! :) Est-il possible d’exécuter les commandes depuis l’interface Github ?

  6. Khalil TABBAL dit :

    Bonjour,

    Merci pour votre article très intéressant.

    Concernant la commande Git Archive, existe t’il un moyen d’archiver les également les modifications qui n’ont jamais été commité ?

    Merci d’avance,

Ajouter un commentaire


Syndication

Réseaux sociaux