Mon référentiel a subi des changements tels que:
- ... certains commits non liés ...
- Commit nouveau fichier
foo
avec 100 lignes de contenu - ... des commits intermédiaires, dont certains touchent
foo
... - Insérez le contenu de
foo
en haut d'un fichier existantbar
etgit rm foo
dans le même commit - ... plus de commits non liés ...
Maintenant, je veux voir le journal du fichier supprimé foo
. Tout ce que j'ai lu, y compris sur SO, dit que je devrais pouvoir le faire git log -- foo
, mais cette commande ne produit aucune sortie.
Si je trouve le commit qui inclut la suppression, foo
je peux git log 1234abcd -- foo
et voir son journal, donc je pense que mon chemin vers foo
n'est pas le problème. Notez également que les git merge-base HEAD 1234abcd
sorties 1234abcd[...]
, donc je pense que cela devrait prouver que le commit est accessible à partir de HEAD
. Notez qu'il n'y a pas de fichier foo
dans mon arbre de travail (évident, car il a été supprimé). Utilisation de Git 1.7.1.1 sur OS X.
Pourquoi ne git log -- foo
fonctionne pas pour moi et comment puis-je y remédier? Merci!
git log --follow -- foo
ougit log --follow -M -- foo
? (pour forcer la détection de changement de nom)--follow
mais en lisanthistory
je vois que j'avais depuis cd'ed ailleurs quand je l'ai essayé, rendant le chemin invalide.git log --follow -- foo
travaillé quand j'ai essayé à partir du bon point de départ. Je suppose que Git a envisagé defoo
devenirbar
une sorte de changement de nom? En tout cas, merci! Je serai heureux de créditer cela si vous le republiez comme réponse.--
est changé—
dans le titre de la question ...Réponses:
Vous souhaitez utiliser l'
--follow
option surgit log
, qui est décrite dans la page de manuel comme:En effet, non seulement cela vous permet de voir l'historique d'un fichier renommé, mais cela vous permet également de visualiser l'historique d'un fichier qui n'est plus dans l'arborescence de travail. Ainsi, la commande que vous devez utiliser devrait ressembler à quelque chose comme:
Mettre à jour:
Git 2.9+ a maintenant activé cela par défaut pour toutes les commandes
git diff
etgit log
:Merci à x-yuri pour le heads-up!
la source
--follow
pièce. J'avais juste besoin d'ajouter--
. Je coursgit-2.9.0
.