Easy / быстро?Не уверен, но я так не думаю.Git отслеживает содержимое файлов в виде BLOB-объектов.Имена файлов этих BLOB-объектов затем сохраняются в объектах дерева.Затем коммиты указывают на объекты дерева и добавляют некоторые метаданные, такие как коммиттер, datetime и родительский коммит.
Я не думаю, что Git на самом деле сохраняет переименования как таковые, это просто разница между деревьями, указывающими на одно и то жеblobs.
Я думаю, что лучшее, что вы можете сделать, - это иметь / path / to / file в качестве URL, а когда вы не найдете этот файл в HEAD, итеративно сканируйте в обратном направлении историю, чтобы найти коммит, гдебыл один.
Если вы собираетесь делать такие вещи на уровне репозитория, я рекомендую вам взять копию Git Internals Peepcode, которая довольно четко объясняет внутреннюю работу репозитория git.