Скажем, у меня есть следующая история
D---E-------F
/ \ \
B---C---G---H---I---J
/ \
A-------K---------------L--M
git log -ancestry-path D..M даст мне
E-------F
\ \
G---H---I---J
\
L--M
Однако я хотел бы просто следующее
E
\
G---H---I---J
\
L--M
или
E-------F
\
I---J
\
L--M
По сути, я хотел бы пройти только один путь, а не два.
Возможно ли это? И если да, то какая команда?
Edit:
Я пробовал использовать - first-parent, но это не совсем так. git log -first-parent G..M дает мне
F
\
H---I---J
\
L--M
Он включает F, потому что F является первым родителем I. Вместо этого я хотел бы
H---I---J
\
L--M
Любая помощь будет оценена
Решение (это сработало для меня):
Как заявила @VonC, для этого нет ни одного однострочного вкладыша. Поэтому я закончил использование bash script.
- Для каждой фиксации в 'git log -ancestry-path G..M'
- Определите, включен ли родитель $commit, который мы ранее делали в
- Если да, продолжайте. сделать что-то интересное.
- Если нет, пропустите эту фиксацию.
Например, git log -first-commit G..M
H - F - I - J - L - M
Однако родитель F - это E, а не H. Поэтому мы опускаем F, давая мне
H - I - J - L - M
Yay!