2016-02-01 2 views
1

Все вам удобны с примерами и разработками в справочной системе git для упрощения истории? Я сталкиваюсь с некоторыми трудностями при понимании при использовании этой справки/руководства и названного примера.Упрощение истории журналов Git, пример разработки в руководстве пользователя git

.-A---M---N---O---P---Q 
/ /////
I  B C D E Y 
\ /////
    `-------------' X 
  • I начальное обязательство ... Foo существует с содержанием «ASDF», и файл quux существует с содержанием «quux» ....
  • В А, Foo содержит только «Foo» ...
  • в содержит один и тот же изменение как ...
  • с не изменяет Foo, но его слияние Н изменяет его на «Foobar» ...
  • Р TREESAME к О. ..
  • Чувство слияния с изменением не присутствует ни в одном из его родителей включены? См. Описание слияния N в справочнике git log
  • Файл quux претерпевает некоторые изменения при переходе от O к слиянию P, почему разработка в помощи квалифицирует P как treeame против O?

Похоже, что термины TREESAME и! TREESAME видны в рамках одного файла/каталога. Не использовать для выражения свойства commit для нескольких файлов. Это правда?

ответ

1

В TREESAME выражения в описании применяются к деревьям каждой фиксации (попарно, как они сравниваются) после делать какие-либо фильтрации файлов специфичной для вашей команды git log. Например:

git log --simplify-merges 

сравнивает каждый файл в каждом дереве, чтобы решить две совершают ли деревья «то же самое», в то время как:

git log --simplify-merges -- README 

сравнивает только файл README в каждом дереве, а также:

git log --simplify-merges -- README dir1 dir2 

оставляет README и любые файлы в двух каталогах дерева, прежде чем сравнивать деревья.

+0

Упомянутый пример и разработка в справочной системе git не ограничивают фильтрацию файлов. В нем рассказывается только о двух файлах, поэтому я предполагаю, что в этих разработках не следует рассматривать фильтрацию. Мой вопрос все еще открыт. –

+0

Я знаю, что в документации не говорится об этом, но это то, что на самом деле происходит: git эффективно отбрасывает любые части дерева, которые вы обозначаете как несущественные (перечисляя части, которые вы считаете релевантными) перед выполнением сравнения TREESAME. Если вы не перечисляете какие-либо детали, git сравнивает немодифицированные деревья, т. Е. Все имеет значение. – torek

+0

Этот ответ вместе с прилагаемым комментарием от torek отвечает на мой вопрос. Спасибо. –