Annuler les modifications apportées à un fichier dans un commit
Je veux revenir les changements effectués par un particulier s'engager à un fichier seulement.
Puis-je utiliser git revert de commande pour que?
Tout autre moyen simple de le faire?
- Double de stackoverflow.com/questions/215718/...
- Étrange... pourquoi le changer après toutes ces années?
Vous devez vous connecter pour publier un commentaire.
La façon la plus propre que j'ai vu de faire ce qui est décrit ici
Similaire à VonC de réponse, mais à l'aide de
git show
etgit apply
.fatal: unrecognized input
git checkout -- some_file.c
pleinement de revenir à nouveau le fichier.-3
drapeau git s'appliquent pour les trois voies de fusion lorsque le patch ne parvient pas, depuis que je suis généralement de la correction d'un changement un peu en arrière dans le temps.some_file.c
comprend le chemin pour le fichier si il y en a un sinon, vous aurez en silence patch de rien 🙂En supposant que c'est ok pour le changement de la validation de l'histoire, voici un flux de travail pour annuler les modifications apportées dans un seul fichier dans une version antérieure du commit:
Par exemple, vous souhaitez annuler les modifications apportées dans 1 fichier (
badfile.txt
) à s'engageraaa222
:Rebase sur la base de valider, amender le problème commettre, & continuer.
1) Début de rebase interactif:
2) Marque le problème de s'engager pour l'édition dans l'éditeur en changeant
pick
àe
(edit):3) annuler les modifications apportées à la mauvaise file:
4) Ajouter les modifications & modifier le commit:
5) Terminer le rebase:
edit
n'était pas le fait de montrer changé. Mais legit show -- badfile.txt | git apply -R
a donné la réponse que j'ai besoin de <3git revert
est pour tous les fichiers contenus dans un commet.Pour un seul fichier, vous pouvez le script:
(À partir de la git-shell-scripts utilitaires de smtlaissezfaire)
Remarque:
une autre façon est décrit ici si vous n'avez pas encore de commettre votre modification.
git checkout
a certaines options pour un fichier, modifier le fichier de la TÊTE, écrasant vos changements.De chute.sur.Caprica jusqu' mentionne dans les commentaires:
git revert-file <hash> <file-loc>
et ont de ce fichier spécifique est revenue. J'ai levé de cette réponse (même si j'ai dû faire quelques modifications pour fonctionner correctement). Vous pouvez trouver une copie de mon.gitconfig
et édité script ici: gist.github.com/droppedoncaprica/5b67ec0021371a0ad438Je voudrais simplement utiliser le
--no-commit
option pourgit-revert
et puis supprimer les fichiers que vous ne voulez pas est revenue de l'index avant de finalement s'engager. Voici un exemple montrant comment facilement revenir simplement les changements de foo.c dans la deuxième plus récente commettre:La première
git-reset
"unstages" tous les fichiers, de sorte que nous pouvons ensuite ajouter juste un fichier que nous voulons est revenue. La finalegit-reset --hard
se débarrasser du reste de fichier de revient que nous ne voulons pas garder.La commande ci-dessus va prendre le fichier de commettre, mais il reflète
git status
.La commande ci-dessus va annuler les modifications (comme un résultat que vous obtenez le fichier de même que la TÊTE).
(Pass
--amend
de modifier commettre.)Avec cela, le fichier qui est déjà dans le commit est retiré et est revenue.
Les étapes ci-dessus doivent être suivies à partir de la succursale où la validation est faite.
Beaucoup plus simple:
puis
et puis
le fichier est allé et s'engager de hachage, message, etc ... ne sont pas les mêmes.
git checkout -- path/to/file/to/revert
étape? Aussi, il n'est pas vrai que le hachage est la même par la suite, non? La dernière phrase peut-être mieux que quelque chose comme: "Le résultat est que le dernier commit est remplacé par un nouveau qui ne diffère en ce qu'il ne contient pas les modifications de la revenue de fichier."Vous pouvez suivre cette procédure:
git revert -n <*commit*>
(-n
rétablir toutes les modifications, mais ne sera pasvalider)
git add <*filename*>
(nom du fichier/s que vous souhaitez revenir & commit)git commit -m 'reverted message'
(ajouter un message pour le retour)mis à jour avec les modifications que vous avez commis, avant de revenir