Comment puis-je ouvrir une révision spécifique d'un fichier avec Magit?

43

Est-il possible d'ouvrir une révision spécifique d'un fichier dans Emacs avec Magit sans changer la branche actuelle?

J'ai modifié certaines modifications locales apportées à une révision dans laquelle les fonctions modifiées ont été remplacées par des fonctionnalités situées dans un fichier différent. Je voudrais ouvrir l'ancienne révision de mes modifications dans un tampon séparé afin de pouvoir comparer les modifications côte à côte.

Ma solution actuelle de hacky a été d’exécuter git show <branch pre-rebase>:file > old_filepuis d’ouvrir old_filedans Emacs.

David Holm
la source
1
github.com/pidu/git-timemachine peut afficher temporairement un fichier entre les versions.
Kuanyui
1
@kuanyui j'utilise git-timemachinemais depuis que mon code a été rebasé, je ne pense pas que cela fonctionnera car l'ancien code ne fait pas partie de l'historique de la branche actuelle?
David Holm

Réponses:

56

Vous pouvez afficher un fichier pour une révision spécifique en utilisant M-x magit-find-file RET <filename> RET.

Ou vous pouvez tout d’abord visualiser le diff à valider en appuyant RETdessus, en naviguant jusqu’au fichier situé dans le diff, puis en appuyant à RETnouveau.

Kyle Meyer
la source
8
Cela fonctionne pour moi. voici ce que je fais: à partir de la version actuelle du fichier M-x magit-log-buffer-file, déplacez la ligne vers le commit souhaité, puis M-x magit-find-file. Ensuite, la valeur par défaut sera ce commit. Je dois donner le chemin du fichier car il n’est pas récupéré dans le tampon du journal.
Liam
@tarsius, Un peu comme magit-find-file mais où je n'ai besoin que de sélectionner la révision pour le fichier du tampon actuel. Est-ce qu'il existe déjà?
ergosys
Oui, utilisez magit-find-file-le depuis un tampon de visite de fichier, puis tapez RETà la deuxième invite (le fichier approprié est proposé par défaut).
tarsius
Merci pour l'info et tout votre travail sur Magit. Ce n'était pas trop difficile de pirater une fonction qui saute cette touche supplémentaire fastidieuse, donc je suis heureux jusqu'à ce que la prochaine démangeaison se produise.
ergosys
29

C'est possible avec Plain VC (intégré à Emacs), sans Magit. Tapez C-x v ~et tapez la version que vous voulez. Il comprend les balises et les hachages SHA1, ainsi que les ~1suffixes habituels, etc.

legoscia
la source
Ce n'est pas une réponse à une question magique. Souhaitez-vous poster une réponse en C à une question Ruby?
Bryan Ash
4
@BryanAsh oui, si la solution en C est tellement plus facile.
Markus Strauss