Список фиксирует ДО указанного идентификатора коммита - PullRequest
2 голосов
/ 05 апреля 2019

Моя иерархия верхнего уровня репо выглядит так:

/dir1
/dir2
/dir3

Я на HEAD и git log --oneline --first-parent -5 -- dir1/ выдает что-то вроде следующего:

abcb COMM-25 Fix latest
ba0f COMM-17 Some stuff
cda8 New files
db7c COMM-9 Feature merge
e20a Init smth

В Интернете есть много интересных вещей, таких как git log --oneline --first-parent db7c.. -- dir1/, чтобы получить

abcb COMM-25 Fix latest
ba0f COMM-17 Some stuff
cda8 New files

или даже git log --oneline --first-parent db7c..ba0f -- dir1/ для ограничения на обоих концах

ba0f COMM-17 Some stuff
cda8 New files

Но, черт возьми, Я не могу найти ничего, что могло бы помочь вывести все коммиты до определенного идентификатора коммита . Мне нужно что-то вроде git log --oneline --first-parent ..cda8 -- dir1/, чтобы получить

cda8 New files
db7c COMM-9 Feature merge
e20a Init smth
<...>

только с хешем cda8. Самая последняя команда, приведенная выше, является, конечно, псевдокодом и не дает никакого вывода в реальной жизни (к сожалению :)).

Итак, как мне перечислить все коммиты в определенном каталоге и ДО данного идентификатора коммита (включительно) без изменения HEAD?

Я думаю, что могу принять изменение содержимого dir1 (ТОЛЬКО dir1, не касаясь dir2 и dir3!), Однако выполнение git checkout cda8 dir1/ или git reset cda8 dir1/ не окажет никакого влияния на последующий вывод git log <...> -- dir1/.

Пожалуйста, помогите, мерзавцы!

1 Ответ

4 голосов
/ 06 апреля 2019

Я думаю, что вы очень старались слишком здесь, и именно это помешало вам увидеть решение, спрятанное в поле зрения.

То, что вы просите , это стандартное поведение журнала при наличии refspec.Он будет регистрировать всю историю коммитов , которая достижима * с этой точки:

git log --oneline --first-parent cda8 -- dir1/

(обратите внимание, что я предпринял вашу последнюю попытку, , пропуская "..«) должен выводить:

cda8 New files
db7c COMM-9 Feature merge
e20a Init smth
...
<follows ALL the rest of commits history (but only those which have modified dir1/)>

* « достижимый »в git следует понимать как« достижимый посредством рекурсивного исследования родителей данного коммита »

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...