Есть ли какая-либо особая дедупликация между вилками, и если так, как происходит дедупликация между вилками, частично зависит от сервера. Git предоставляет несколько механизмов, таких как переменная окружения GIT_ALTERNATE_OBJECT_DIRECTORIES
и файл objects/info/alternates
. Подробности смотрите в документации верхнего уровня и документации макета хранилища git . При использовании этого метода будьте осторожны; учитывайте предупреждения в документации.
Помните, что в отношении самого Git форк - это просто клон: сервер записывает некоторую дополнительную информацию за спиной Git (даже если для этого использует механизмы Git), чтобы «форк» имел дополнительное значение по сравнению с простой клон, но сам Git блаженно не знает об этой дополнительной информации. Если в процессе клонирования используется локальный путь (не file://
и не URL-адрес хоста), Git по умолчанию будет пытаться использовать жесткие ссылки для обмена объектами и / или упаковки файлов. Этот вид обмена в целом безопасен и не требует особого ухода. Это видно для Git, но Git не нужно знать об этом за пределами начального процесса жесткой ссылки.
Помимо этих методов, базовая операционная система может предоставлять методы дедупликации для файлов и / или для блочного хранилища. Они, если они есть, невидимы для самого Git. Они не требуют особого ухода при использовании Git. Как правило, они используют больше вычислительной мощности для обнаружения такого дублирования и могут быть сложны в администрировании, но все это происходит на уровне ОС.