git diff-tree, показывающий уже объединенный набор изменений

Только начинаю с поддерева git. Я следовал официальному руководству для начинающих.

В моей рабочей копии в каталоге A репозитория A я добавил поддерево в подкаталоге B для репозитория B. Имя ветки, которое я использовал для проверки мастера B, также B.

Я сделал коммит в ветке B и проверил мастер A, git diff-tree -p B представил diff, соответствующий последнему коммиту в B.

Затем я применил следующую команду:

git merge --squash -s subtree --no-commit B

И совершил.

Я проверил, что слияние прошло успешно, но та же команда diff-tree, что и раньше, по-прежнему представляет ту же разницу, соответствующую последней фиксации в B, хотя проверка через git log и нормальную git diff я вижу, что фиксация была применена к мастеру, я не знаю почему предыдущий diff-tree сохраняется.

Почему и что я делаю не так?


person pepper_chico    schedule 27.04.2015    source источник


Ответы (1)


Проблема, похоже, заключается в том, что, согласно справке по дереву различий, он не «делает» то, что этот пример подразумевает. Если в этом случае вы предоставляете только одно древовидное представление B, то оно сравнивает древовидное представление со своим родителем. Этот родитель не меняется независимо от того, сколько раз вы его объединяете. Например, и у них используется одно и то же имя ветки как для их папки, так и для ветки.

Если вместо этого вы скажете:
git diff-tree -p HEAD:B B или git diff-tree -p HEAD:B B/B, это должно показать вам, что между этими двумя деревьями нет никакой разницы.

person UpAndAdam    schedule 21.08.2015