Comment inverser un morceau spécifique d'un commit dans git?

Je me demande s'il existe un moyen d'inverser rapidement un morceau spécifique d'un commit.

Je peux générer un diff entre deux commits ou HEAD pour voir la différence.

Comment puis-je inverser un seul de ces mecs (ou mieux encore, un ensemble de mecs spécifiques)?

28
demandé sur smci 2010-11-22 20:24:57

3 réponses

git checkout -p $REF -- path/to/file

$REF est un nom de ref ou un ID de commit qui spécifie le commit à partir duquel vous voulez prendre l'état du fichier. Par exemple, pour annuler sélectivement les modifications apportées lors de la dernière validation, utilisez HEAD^.

36
répondu cdhowie 2010-11-22 17:27:59
git difftool $REF -- /path/to/file

$REF est un nom de ref ou un ID de commit qui spécifie le commit à partir duquel vous voulez prendre l'état du fichier. Par exemple, pour annuler sélectivement les modifications apportées lors de la dernière validation, utilisez HEAD^.

Cette question a déjà été répondue par @cdhowie, mais je trouve qu'il est un peu plus agréable d'utiliser un difftool interactif comme meld pour restaurer sélectivement de vieux morceaux/lignes de code, surtout s'il y a un bug nouvellement introduit, difficile à trouver dans le code.

2
répondu erik 2013-08-28 20:27:24

Pour récupérer un fichier supprimé d'un commit précédent, j'ai utilisé la réponse ici:

De Trouver et de restaurer un fichier supprimé dans un dépôt Git

git checkout <deleting_commit>^ -- <file_path>
1
répondu John Naegle 2017-05-23 12:26:05