Сценарий: хранилище с полностью отключенными фрагментами истории. Например. с разных пультов, у которых нет общей истории git. (Обычно это происходит в сценариях с поддеревом git.)
Можно ли выделить разницу между этими двумя коммитами, даже если у них нет общей истории? (И активная фиксация не имеет общей истории ни с одним из этих двух)
Я пробовал это (в подкаталог с опцией -X subtree=sub/dir
):
git cherry-pick -X subtree=vendor/package aaa/aaa..bbb/bbb
Без поддерева это было бы проще:
git cherry-pick aaa/aaa..bbb/bbb
Где aaa / aaa и bbb / bbb - это два коммита с отключенной историей.
К сожалению, это не работает: aaa / aaa..bbb / bbb читается не как diff, а как что-то еще.
То же самое можно показать с git show aaa/aaa..bbb/bbb
, который сильно отличается от git diff aaa/aaa bbb/bbb
. Например. если у обоих одинаковые файлы, то git diff будет пустым, но git show a..b покажет только b, но не a.
Примечание. Мой личный вариант использования связан с фоном поддерева. Я упоминаю об этом, чтобы избежать искусственного варианта использования, когда люди обычно начинают обсуждать обоснованность варианта использования вместо фактического вопроса.
Идеальный ответ сначала обращается к общему случаю, а затем к случаю поддерева.