Git rev-list: исключить коммиты, уже включенные в слияние - PullRequest
0 голосов
/ 25 октября 2018

У меня есть репозиторий с мастер-веткой, в которой часто происходят слияния из разных ветвей дефектов, как на рисунке ниже (дефект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, которые могут включить это поведение?

1 Ответ

0 голосов
/ 25 октября 2018
git rev-list master --first-parent
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...