Я предполагаю, что 1990ca669fe и 00de228dcdc имеют разные истории (ни один из них не доступен).Вы, вероятно, хотите эту команду (три точки, а не две):
git log 1990ca669fe...00de228dcdc -- t/tests.conf
Она будет отображать коммиты с каждой стороны истории (а не только коммиты, ведущие к 00de228dcdc).
Вкратце:
Чтобы увидеть «вещи» с обеих сторон (A и B), используйте git diff A..B
и git log A...B
.
. Чтобы получать «вещи» только с вторая сторона (B), используйте git diff A...B
и git log A..B
.
Это весьма неудачный интерфейс пользователя.
Команды «log» предназначены для просмотраГраф истории («диапазоны» коммитов или наборы коммитов).
Они интерпретируют A..B
как эквивалент B --not A
(т. е. набор коммитов, которые достижимы из B, но не из A).A...B
эквивалентно A B --not $(git merge-base --all A B)
(т. Е. Множество коммитов с обеих сторон, поскольку они расходятся; это называется «симметричной разностью A и B»).
Команды «diff» предназначены для сравнениядва отдельных дерева или пятна (только «конечные точки», (в основном), а не история, которая может их связать).Они интерпретируют A..B
как эквивалентное A B
(то есть просто еще один способ напрямую указать конечные точки для операции diff).A...B
эквивалентно
$(git merge-base A B)..B
или $(git merge-base A B) B
(это с учетом истории, таким образом, «в основном» выше).
С git-diff (1):
"diff" означает сравнение двух конечных точек , не диапазонов, и обозначений диапазонов (" .. " и« ... ») не означает диапазон, определенный в разделе «УКАЗАНИЕ ДИАПАЗОНОВ» в gitrevisions (7) .
Давайте рассмотрим git log A..B
и git diff A..B
для двух разных типов истории.
Если A и B линейно связаны (показано ниже),
---1---2---A---3---4---B
, то вы увидите похожий результатдля обоих типов команд.git log A..B
покажет коммиты 3, 4 и B. git diff A..B
покажет разницу между деревьями, на которые ссылаются коммиты A и B;эта разница будет эквивалентна накоплению патчей, представленных коммитами 3, 4 и B.
Три-точечные версии неинтересны, так как базой слияния A и B является сама A.Для команд «log» A...B
означает A B --not $(git merge-base --all A B)
, что в итоге равно
A B --not A
, что означает B --not A
, что совпадает с A..B
.Для команд «diff» A...B
означает $(git merge-base A B)..B
, что в итоге равно A..B
.
Однако, если A и B имеют расходящиеся истории (ни одна из них не достижима от другой; проиллюстрировано ниже),
---1---D---3---4---A
\
5---6---B
, тогда в diff будут внесены изменения из обеих веток, а в журнале будут показаны только коммиты, сделанные в одну из ветвей.git log A..B
покажет коммиты 5, 6 и A. git diff A..B
покажет разницу между деревьями, на которые ссылаются коммиты A и B;этот diff будет включать патчи, представленные коммитами 5, 6 и B, а также 3, 4 и A.
В этом случае интересны варианты с тремя точками.Для команд «log» A...B
означает
A B --not $(git merge-base --all A B)
, что в конечном итоге означает A B --not D
, которое в конечном итоге расширяется до набора 3, 4, A, 5, 6, B (то есть коммитов, которые достижимы изА или Б, но не оба).Для команд «diff» A...B
означает $(git merge-base A B)..B
, что в итоге равно D..B
(т. Е. Все изменения, сделанные на «стороне B» с тех пор, как B отклонился от A).