Есть ли способ увидеть все версии файла с помощью git? - PullRequest
3 голосов
/ 25 августа 2011

Мне часто нужно найти что-то, что я закодировал в старой версии скрипта, но я не знаю когда.Я обычно пытаюсь прыгать в журнале, находя разные версии и видя, есть ли у них изменения, или я просто сдаюсь и пробую что-то еще.

Что было бы особенно полезно, так это команда, которая выводит каждую версиюфайл между двумя датами или хэшами.Тогда простой grep найдет то, что я ищу.

Вероятно, это сработает примерно так:

git showeverything d612905a..b39af32e /path/to/file /tmp/output

Ответы [ 4 ]

4 голосов
/ 25 августа 2011

git имеет идеальный инструмент для этого: git log -S, который будет искать изменения и отображать только те коммиты

# search changes in all branches which touch the string $abc in a file
git log -p -S'$abc' --all -- path/to/file
0 голосов
/ 25 августа 2011

git log file показывает идентификаторы коммитов для всех коммитов, которые повлияли на файл .

git show commitid:file печатает содержимое соответствующей версии файла на стандартный вывод.

Обратите внимание, что в команде git show, если вы просто укажете имя файла относительно корня вашего git-репозитория, если вы не укажете путь, а не ваш текущий каталог. Чтобы показать файл в текущем каталоге:

git show commitid:./file*

0 голосов
/ 25 августа 2011

Вы можете использовать git log [commit_range/dates/other_constraints] -- <filename(s)>, чтобы показать все журналы изменений, относящиеся к конкретному файлу, и вы можете добавить ограничения на даты / фиксации / и т.д. а также.

Используйте git show <same stuff>, чтобы отображать файлы на каждом этапе ...

0 голосов
/ 25 августа 2011

Я понимаю, что это может быть не тот ответ, который вы ищете, но каждый веб-сайт / служба git-хостинга имеет приятный графический интерфейс, который просматривает историю коммитов каждого файла в репозитории.Я часто этим пользуюсь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...