Как просмотреть завершенные коммиты при отслеживании истории одного файла в Git?
Вопрос
У меня есть репозиторий Git с примерно двухлетней историей в нем.У меня есть один файл в нем, для которого я хочу найти все коммиты, и для каждого коммита:все остальные файлы, которые были зафиксированы в нем.Давайте предположим, что этот файл называется file.txt.Я могу запустить gitk с этим файлом в качестве аргумента:
gitk file.txt
и я действительно получаю каждый коммит.Однако просмотр этого дерева в gitk показывает только изменения, внесенные в file.txt.Я хотел бы посмотреть, какие еще файлы были изменены в этом коммите.Я могу скопировать и вставить каждый коммит SHA1 и отобразить его, но существует более сотни коммитов, связанных с этим файлом.
Я замечаю, что раздел "комментарии" в нижней правой части экрана пуст (отображается только текст "Комментарии").Может быть, там можно было бы показать список файлов?
Решение
В командной строке,
git log -p --full-diff file.txt
выведет то, что вы хотите.
Если вы должны увидеть это в gitk, вызовите его с помощью НЕТ аргументы, найдите фиксацию "касаясь пути" file.txt , и фиксация, содержащая этот файл, будет выделена жирным шрифтом.И вы можете использовать кнопки "вверх" и "вниз", чтобы пройти по нему.
Другие советы
На самом деле у вас может быть функциональность '--full-diff' в gitk, просто не напрямую из командной строки.Просто сделайте следующее:
- Запустите gitk обычным способом, например:
gitk file.txt
- Выберите в меню "Вид -> Изменить вид ...".Убедитесь, что вы редактируете представление "Командная строка".
- В поле редактирования рядом с "Дополнительные аргументы для git log" введите
--full-diff
- Нажмите "Применить" или нажмите [F5].
Этого должно хватить.Почему gitk не позволяет вам использовать это из командной строки, для меня загадка, потому что это очень полезная опция.
Другое решение из списка рассылки, датированное далеким прошлым в 2008:
Попробуйте отключить опцию "ограничить различия в перечисленных путей" в настройки меню (или добавление "набор limitdiffs 0" в ваш ~/.гифок).