Existe-t-il une commande qui vous permet d'annuler partiellement les modifications d'un fichier (ou de fichiers) dans le répertoire de travail?
Supposons que vous ayez beaucoup modifié un fichier mais que vous vous rendiez compte que vous souhaitez annuler certaines des modifications à l'état validé, mais pas les autres modifications.
J'envisage une option pour git checkout
qui fonctionne beaucoup comme git add -p
, c'est-à-dire qu'il passe par le fichier morceau par morceau et vous demande si vous voulez le garder ou non.
revert
vous permet-elle de sélectionner les modifications d'un fichier qui seront annulées? Vraiment demander, car je n'ai de l'expérience qu'avec CVS et Git. Dans Git, ilgit checkout -- path/to/file
y a une seule commande qui annule toutes les modifications de ce fichier, mais ce n'est pas la même chose que ci-dessus.git checkout --patch
etgit reset --patch
qui fonctionnent commegit add --patch
dans le dernier git.--
indique généralement la fin de l'analyse des options, et que tous les arguments qui suivent doivent être interprétés littéralement. Cela signifie que vous n'aurez pas à ajouter./
avant tout nom de fichier commençant par un signe moins, si le nom de fichier vient après--
.git checkout --patch
le diff semble être à l'envers. Les symboles moins ajoutent du texte à ma copie de travail et les symboles plus suppriment des lignes de ma copie de travail.Avec la version git> = 1.7.1 je peux
Je ne sais pas quand cette fonctionnalité a été introduite.
la source
git reset -p
pour annuler de manière sélective les modifications de la zone de préparation / index. Je ne sais pas non plus dans quelle version de Git cela a été introduit.git checkout $file
rétablit l'état du fichier$file
au dernier état validé. Je pense que vous pouvez utilisergit checkout SHA-1 -- $file
pour restaurer le fichier au commit identifié par SHA-1.la source
De combien de commits avez-vous besoin pour revenir en arrière et sélectionner? S'il ne s'agit que d'un seul, prenez peut-être une branche juste avant, extrayez le fichier que vous avez validé et utilisez-le
git add -p
pour l'ajouter comme vous le souhaitez. Ensuite, vous pouvez revenir à l'endroit où vous étiez et extraire le fichier de votre branche temporaire.C'est:
D'autres alternatives incluent revenir en arrière et éditer le commit avec
git rebase -i
(marquer le commit commeedit
, puis faire ungit reset HEAD^
et refaire le commit lorsqu'il est replacé dans le shell).Si les modifications que vous devez sélectionner sont réparties sur une série de validations, il peut être préférable de les extraire sous forme de patchs (ou d'un patch les couvrant tous) et d'éditer manuellement le patch, en supprimant les modifications que vous souhaitez conserver, et introduire le résidu dans
git apply --reverse
.la source