Мой репозиторий претерпел такие изменения, как:
- ... некоторые несвязанные коммиты ...
- Зафиксировать новый файл
foo
со 100 строками содержимого - ... промежуточные коммиты, некоторые из которых касаются
foo
... - Вставьте содержимое
foo
в начало существующего файлаbar
иgit rm foo
в тот же коммит - ... больше несвязанных коммитов ...
Теперь я хочу увидеть журнал удаленного файла foo
. Все, что я читал, включая SO, говорит, что я должен уметь git log -- foo
, но эта команда не выводит.
Если я найду фиксацию, включающую удаление, foo
я могу git log 1234abcd -- foo
увидеть ее журнал, так что я думаю, что мой путь foo
не является проблемой. Также обратите внимание, что git merge-base HEAD 1234abcd
выходные данные 1234abcd[...]
, поэтому я думаю, что это должно доказать, что фиксация доступна из HEAD
. Обратите внимание, что foo
в моем рабочем дереве нет файла (очевидно, поскольку он был удален). Использование Git 1.7.1.1 в OS X.
Почему git log -- foo
у меня не работает и как это исправить? Благодарность!
git log --follow -- foo
илиgit log --follow -M -- foo
? (для принудительного обнаружения переименования)--follow
но, читая,history
я вижу, что с тех пор, когда я попробовал, я записал компакт-диск в другом месте, что сделало путь недействительным.git log --follow -- foo
работал, когда я пытался с правильной отправной точки. Я предполагаю , что Git считается качениюfoo
вbar
качестве своего рода переименования? В любом случае спасибо! Я буду счастлив поверить в это, если вы перепубликуете его в качестве ответа.--
меняют на—
...Ответы:
Вы хотите использовать
--follow
опцию ongit log
, которая описана на странице руководства как:По сути, это не только позволяет вам видеть историю переименованного файла, но также позволяет вам просматривать историю файла, которого больше нет в рабочем дереве. Таким образом, команда, которую вы должны использовать, должна выглядеть примерно так:
Обновить:
Git 2.9+ теперь включено это по умолчанию для всех
git diff
иgit log
команд:Спасибо x-yuri за хедз-ап!
источник
--follow
детали. Мне просто нужно было добавить--
. Я бегуgit-2.9.0
.