У меня есть репозиторий с мастер-веткой, в которой часто происходят слияния из разных ветвей дефектов, как на рисунке ниже (дефект1 - это название ветки дефектов):

Я хотел бы получить список всех коммитов главной ветки, от предыдущего до коммита A до заголовка (в данном случае E).Этот список будет использоваться для отмены всех коммитов из-за конкретного варианта использования моего проекта.
Я собирал этот список, используя git rev-list
:
git rev-list "${commitA}~1"..origin/master
Проблема в том, что когда я это делаю, я получаю коммиты X и Y в миксе, в то время как коммит D уже включает изменения обоих коммитов X и Y. Я могу отменить коммит D с помощью git revert -m 1
.Когда я пытаюсь вернуть X и Y, я получаю ошибку, поскольку коммиты не находятся в главном дереве.Я хотел бы получить только A ~ 1, A, B, C, D и E.Я мог бы легко сделать что-то вроде:
git rev-list "${commitA}~1"..origin/master ^defect1
, но может быть несколько ветвей дефектов с разными именами, и невозможно заранее знать их имена.
Есть ли другие опции в git-rev-list, которые могут включить это поведение?