Intereting Posts
Доступ к сетевому диску в шлюзе передачи сообщений VisualSVN Синхронизация репо прерывается между ними из-за сбоя компьютера Получение строки метрик кода из Visual Studio Team Services для конкретных дат и проекта? Устранение неполадок с пользовательскими входными данными с терминала Перезаписать мастер с удалением из ветви функции в GIT? Интеграция GIT Fogbugz SVNkit не работает в UNIX Gitignore glob path Невозможно клонировать git repo через https на gitlab git svn dcommit to sourceforge терпит неудачу, но он работает напрямую через svn Как запустить операцию сравнения каталогов из TortoiseGit? Можно ли использовать стратегию слияния git, которая сочетает в себе как «поддерево», так и «нашу» функциональность? Индивидуальный программист, заинтересованный в управлении версиями в первый раз проблема слияния нескольких запросов на получение от одного и того же вкладчика Викинг в GitHub

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

Я использую 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 .