Есть ли способ определить отмененные коммиты при запуске git rev-list B2 ^ B1? - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь найти все коммиты, которые существуют в одной ветке, но не существуют в другой. Взяв изображение ниже, я хочу знать, что в B2, чего нет в B1. Когда я пытаюсь выполнить следующую команду:

git rev-list B2 ^B1

, я возвращаю только фиксацию c2, хотя c1 был отменен перед переходом в B1. Есть ли способ обнаружить эту ситуацию, чтобы вернуть как c1, так и c2, поскольку их изменения технически не содержатся в B1?

Comparing two branches with reverted commits in between

1 Ответ

0 голосов
/ 08 мая 2020

Делаем некоторые предположения относительно вашей диаграммы - в частности, что существует фиксация слияния в точке, где диагональная линия соединяется с верхней линией - фиксация c1 буквально равна в ветке B1. В таких операциях, как B2 ^B1, для поиска коммитов используется граф фиксации - группа DAG, состоящая из коммитов и их обратных связей. Они полностью игнорируют снимки в этих коммитах; они просто ходят по графику фиксации.

Это правда, что кроме C1, есть еще одна фиксация, также содержащаяся в ветке B1, которая фактически отменяет C1. Вы не можете найти это легко, поскольку Git не хранит эту информацию самостоятельно. Вы, конечно, можете поместить эту информацию, например, в сообщения фиксации, и написать свой собственный код для просмотра списка коммитов, содержащихся в B1, чтобы увидеть, есть ли коммиты с такими сообщениями журнала, но это то, что вам нужно сделать , не что-то Git будет делать само по себе.

(Мне кажется, что это может быть проблема XY . То есть, возможно, вам не нужен список фиксирует , а скорее сравнение моментальных снимков фиксации веток B1 и B2, возможно, с применением некоторой фильтрации.)

...