Я пытаюсь понять, как работает Git лучше.Как GIT решает, что происходит в блобе?
Учитывая некоторые произвольные файлы и некоторое количество коммитов, как git принимает решение о том, как разбить эти файлы на капли, которые затем однозначно идентифицируются с помощью хэшей SHA-1?
Я только что сделал около 10 коммитов perl/C/java кода и текста в новый git repo и как-то git разделил файлы на маленькие сегменты, как он определил, как эти сегменты должны быть разделены?
Хорошо, спасибо за первую часть, помогает, в последнем пункте, я думаю, что меня смущает, что просмотр определенного файла с помощью GiTK File Viewer Git, похоже, знает, появились части нового объединенного файла, вот где я получил «сегменты», как Git делает определение и откуда взялись эти сегменты и как он узнает, что, например, часто повторяющаяся строка типа «make» является частью уникальной сегмент, а не повторное изменение его собственного права? –
Я не уверен, что вы имеете в виду. Если вы имеете в виду различия, которые он показывает по сравнению с последней версией, это называется «diff» и рассчитывается «на лету» путем сравнения двух файлов. Если вы имеете в виду вид вины в git gui, это делается с помощью некоторого умного алгоритма вины, см. «Git blame» в командной строке. Он работает примерно так же, как и diff, но выполняется для каждой ревизии, а также берет удаленные строки из других файлов. – Pieter
ОК, спасибо, я думаю, что теперь я понял, что смущало меня от других уступащих SCM (SVN/CVS/perforce), так это то, что они обычно не могут автоматически отличаться от старых версий, которые существовали в разных именованных файлах в разных каталогах, если только ветвление не было было сделано явно, что я не делал с Гит в этом случае. Итак, теперь я понимаю, что это две отдельные проблемы, как работает «умный» алгоритм diff/вины и как код хранится в блоках. Я отмечаю ваш ответ, не стесняйтесь добавлять детали, если что-то еще приходит на ум для нас Git newbies ... Спасибо –