Как получить только уникальные коммиты в git - PullRequest
0 голосов
/ 08 февраля 2012

Я хочу получить список уникальных коммитов во всех ветвях, но если кто-то использует rebase в ветке, коммит освобождает родителей. Как решить эту проблему? Как получить список коммитов, которые внесли уникальные изменения?

1 Ответ

3 голосов
/ 08 февраля 2012

Я использую

git log --oneline --graph --cherry-pick --left-right

Глагол, который вы ищете , равен --cherry-pick:

--cherry-pick

Опустите любой коммит, который вводит то же изменение, что и другой коммит на «другой стороне», когда набор коммитов ограничен симметричной разницей.

Например, если у вас есть две ветви, A и B, обычным способомперечислить все коммиты только на одной из них с помощью --left-right, как в примере выше в описании этой опции.Однако он показывает коммиты, которые были выбраны вишней из другой ветви (например, «3-е на b» может быть выбрано вишней из ветви A).С помощью этой опции такие пары коммитов исключаются из выходных данных.

Добавление левого-правого упрощает просмотр различий между ветвями:

git log --oneline --graph --cherry-pick --left-right BRANCH1...BRANCH2

< 6abfdcf only on BRANCH1
> 7b2127a only on BRANCH2
> 919ca24 only on BRANCH2

Здесь также, вишневые кирки или объединенные коммиты «скрыты» от вида

...