Если я делаю push из локального репозитория в удаленный, то на удаленном файл полностью изменяется на локальный? Или они сначала сравниваются и заливаются только изменения?
Ответ
Git оперирует не файлами, а коммитами.
Коммит — это «снимок» текущего состояния рабочей области. Он содержит полные версии файлов, а не изменения (также называемые дельтами или патчами).
Подробнее о коммитах: Каким образом git сохраняет изменившуюся строку при коммите?
Или они сначала сравниваются и заливаются только изменения?
Отчасти вы правы: они действительно сначала сравниваются. Для сравнения файлов используется алгоритм Secure Hash Algorithm. Когда вы заливаете (push) очередные коммиты на удаленный сервер, Git сравнивает значение sha1 для каждого объекта. Если в его истории уже есть объект для этого значения, то повторно закачиваться он не будет. Если нет — то будет закачана полная версия этого файла, а точнее, содержащий его объект типа blob.
на удаленном файл
Как уже отметил alexander barakin, ваш удаленный сервер скорее всего типа bare, то есть не содержит файлов в рабочей области (а только внутренние файлы Git-репозитория).
Комментариев нет:
Отправить комментарий