2015-07-02 2 views
0

Есть несколько ответов о получении последней фиксации для файла. Ответы сводятся к «git log --all --pretty = format:% H - path».Самый быстрый способ получить последнюю фиксацию для файла в git

Обратите внимание на то, что вы выполнили поиск по всему графику.

git log очень медленный. Кажется, что на операцию приходится несколько секунд, что является болезненным, когда у вас есть тысячи файлов, на которые нужно смотреть. Есть ли более быстрый способ водопровода для этого?

+0

журнал мерзавец должен быть мгновенным. вы также можете использовать опцию -n 1 для ограничения 1 фиксации, так как вы хотите только самое последнее. Не знаю, ускорится ли это, но стоит попробовать. Кроме того, если вы находитесь на окнах, есть другие причины, по которым git может быть медленным вообще –

+1

git log сам почти мгновен. git log-path - нет. –

+0

Отредактировано для обозначения использования --all. –

ответ

1

Вы можете использовать эту команду. Это работает очень быстро для меня в большом хранилище, над которым я работаю (миллионы строк кода, история которых насчитывает 10 лет).

git log -n 1 -- filename 
  • -n 1 дает вам последние фиксации
  • -- filename сужает журнал GIT только имя файла, который вы хотите
+0

Это слишком медленно, как указано в вопросе. Есть ли что-то, что я должен исследовать, почему это так медленно? –

+0

Отредактировано для обозначения использования --all. –

+0

Если последняя фиксация в файле была давным-давно, может потребоваться некоторое время, прежде чем git найдет ее. По сути, Git должен искать путь в каждом объекте commit. Затем, если в ветви было много слияний, git должен разветвляться от каждого слияния, искать историю каждого родителя и т. Д. –

Смежные вопросы