Так как git использует хранилище файлов с адресацией по содержимому, там должно быть возможно найти произвольное дерево где-то там, но я не знаю деталей.Я предполагаю, что вы могли бы скопировать файлы из отдельного рабочего каталога в рабочий каталог хранилища, затем зафиксировать все, каким-то образом выяснить хеш объекта дерева, созданного коммитом, и найти в существующих коммитах тот, который ссылается на то же дерево..
Чтобы это работало, дерево, очевидно, должно идеально совпадать, поэтому вы не должны включать в коммит какие-либо неотслеживаемые файлы (например, объектные файлы, резервные копии редактора и т. Д.).
Редактировать: я только что попробовал это на одном репозитории (с git cat-file commit HEAD
, чтобы показать объект дерева в HEAD, и поиск в выводе git log --pretty=raw
для этого хеша дерева), и это не сработало (я не нашелхеш в истории).Я получил кучу предупреждений о преобразовании CRLF, когда делал коммит, так что это могло быть проблемой, т.е. вы, вероятно, получаете разные хеши для одного и того же дерева в зависимости от того, как ваш git настроен для манипулирования текстовыми файлами.Я отмечаю этот ответ вики-сообществом на случай, если кто-то знает, как это сделать надежно.