Найти фиксацию, когда файл был добавлен во все ветви

Я использую git filter-branch для поиска капли в истории в моем репозитории по всем ветвям, используя:

Git Script to Show Largest Pack Objects and Trim Your Waist Line!

Пример вывода из этого сценария можно увидеть ниже:

15547,5149,22ff59d8d472e4d23e51bb083517282c23f016a3 code/thirdparty/Web.dll 14224,2055,1db8de4c4e237c171712caeeff8affa32925c3a8 code/Dictionaries/ge-GE.tdf 

Вышеуказанные SHA предназначены для самих объектов / blobs и не ссылаются на конкретную фиксацию.

Обратите внимание, что в недавней истории репозитория эти файлы были удалены из этого репозитория (они все еще находятся в истории).

Есть ли в любом случае, чтобы найти точную фиксацию во времени, которая ввела эти файлы выше (обратите внимание, что у меня много филиалов и нет способа узнать, на какой ветке они были введены)?

Я пытался:

 git log --all -- code/Dictionaries/ge-GE.tdf 

но ничего не находит. Будет ли он искать только в местных филиалах или он будет также включать ветви удаленного отслеживания?

Вы можете сделать это с помощью git log -- <filename> и некоторых переключателей.

  • --all будут посещать все коммиты во всех филиалах.

  • --topo-order будет делать это в топографическом порядке (т. е. согласно их отношениям, а не их дате), гарантируя, что последняя фиксация, содержащая файл, будет той, которая добавила его.

  • --reverse будет --reverse порядок, поэтому фиксация, которая добавила файл, является первой.

Поместите все это вместе: git log --all --topo-order --reverse -- <filename> . Первая фиксация будет той, которая добавила его.

Затем вы можете использовать различные параметры форматирования, такие как --pretty=oneline и --pretty=oneline его в head -1 чтобы получить только одно коммит.

--limit что вы не можете использовать --limit потому что это происходит до того, как параметры заказа, такие как --topo-order и --reverse .