Git/Recettes

Un livre de Wikilivres.
< Git
Aller à : navigation, rechercher


Supprimer un fichier du dépôt tout garder le fichier[modifier | modifier le wikicode]

git rm fichier.txt supprime le fichier du dépôt mais supprime aussi le fichier local.

Pour ne l'enlever que du dépôt, utiliser git rm --cached.

Annuler une soumission[modifier | modifier le wikicode]

Utiliser git revert avec HEAD pour désigner la dernière soumission effectuée :

 $ git revert HEAD
 Finished one revert.
 [master 47e3b6c] Revert "Soumission 2"
  1 files changed, 0 insertions(+), 1 deletions(-)
 $ ls -a
 .  ..  fichier.txt  .git

Pour signifier d'autres soumissions que la dernière :

  • git revert HEAD^ : l'avant dernière.
  • git revert HEAD~5 : la cinquième moins récente.
  • git revert e6337879 : la soumission n°e6337879.

Nettoyer les changements non soumis[modifier | modifier le wikicode]

Options de git reset dans NetBeans

Pour annuler les modifications de fichiers non soumises (discard) :

git clean -f

Pour annuler les créations de fichiers non soumises :

git stash save -u
git stash drop "stash@{0}"

Annuler les changements soumis[modifier | modifier le wikicode]

Par ailleurs, il existe plusieurs niveaux de reset[1] :

  • soft : ne touche pas à l'index ni au répertoire de travail. Les fichiers en reset retournent juste de la liste des commités à celle à commiter.
  • hard : efface l'index et le répertoire de travail. Cette option équivaut à un reset + clean.
  • mixed : celui par défaut, mélange des deux précédents. Il laisse les fichiers du répertoire de travail, mais annule l'index.
  • merge
  • keep

Pour effacer les changements en cours, en rétablissant les états de la dernière soumission :

$ git reset --hard HEAD

ou

$ git reset --hard e6337879

Pour ne toucher qu'un seul fichier :

$ git checkout fichier.txt


  • Pour effacer les deux derniers commits sans toucher aux fichiers : git reset 'HEAD~2'.
  • Pour effacer les deux derniers commits et leurs modifications dans les fichiers : git reset HEAD~2 --hard.
  • Pour revenir deux opérations en arrière sur la branche : git reset 'HEAD@{2}' (utilise la liste des opérations visible dans git reflog). Cela peut donc permettre d'annuler un reset malencontreux.

Récupérer une version de fichier[modifier | modifier le wikicode]

Il faut d'abord récupérer l'identifiant de la version avec git log :

 $ git log
 commit 47e3b6cb6427f8ce0818f5d3a4b2e762b72dbd89
 Author: NomUtilisateur <NomEmail@exemple.com>
 Date:   Sat Mar 6 22:24:00 2010 -0400
 
     Revert "Soumission 2"
     
     This reverts commit e6337879cbb42a2ddfc1a1602ee785b4bfbde518.
 
 commit e6337879cbb42a2ddfc1a1602ee785b4bfbde518
 Author: NomUtilisateur <NomEmail@exemple.com>
 Date:   Sat Mar 6 22:17:20 2010 -0400
 
     My second commit
 
 commit be8bf6da4db2ea32c10c74c7d6f366be114d18f0
 Author: NomUtilisateur <NomEmail@exemple.com>
 Date:   Sat Mar 6 22:11:57 2010 -0400
 
     My first commit

Ensuite pour lire la version, utiliser git show :

 $ git show e6337879cbb42a2ddfc1a1602ee785b4bfbde518:fichier.txt
 Test Git Wikilivres.
 test de suppression Git pour Wikilivres

Créer et appliquer un patch[modifier | modifier le wikicode]

Créer un patch[2] génère un texte de toute la série des changements entre les branches origines et master.

$ git format-patch origin/master

Pour appliquer un patch :

$ git apply --stat  P1.txt  # affiche les stats des changements
$ git apply --check P1.txt  # vérifie les problèmes
$ git am < P1.txt           # applique le patch dans l'ordre

Le patch est aussi le mode de transfert entre dépôts.

Références[modifier | modifier le wikicode]