Ответ 1
commit^!
- спецификатор диапазона, который означает: это фиксация, но ни один из ее родителей.
Это эквивалентно заданию: commit ^parent1 ^parent2 ^parentN
.
Для diff это не имеет смысла (вы можете сравнить только два дерева)
Из тестирования команда, похоже, показывает различия между базой слияния родителей и последним родителем. Я думаю, что git (mis) интерпретирует параметры, похожие на диапазон A...B
, который будет показывать различия между merge-base A B
и B
(git diff parent1...parent2
будет производить тот же самый diff). Не уверен, что произойдет в случае слияния осьминога.
Возможно, я ошибаюсь, это только предположения, которые я извлек из тестирования с помощью репозитория и посмотрел код git (builtin/diff.c
).