Git clone не клонирует висящие объекты.
И ваш git gc
никак не повлияет на удаленное репо, когда вы нажимаете на него, если только ваш толчок не вызывает висячие объекты, а затем git gc
выполняется на удаленном компьютере, чтобы удалить их.
Если только ....
Это был общий клон (указанный с флагом --shared
или -s
) или локальный клон (--local
или -l
).Из документов:
-l
Когда репозиторий, с которого выполняется клонирование, находится на локальном компьютере, этот флаг обходит обычный транспортный механизм с поддержкой git и клонирует репозиторий, выполнивкопия HEAD и всего, что находится под каталогами объектов и ссылок .Файлы в каталоге .git / objects / жестко связаны, чтобы по возможности сэкономить место.Теперь это значение по умолчанию, если в исходном хранилище задан синтаксис / path / to / repo, так что по сути это опция no-op.Чтобы принудительно копировать вместо жестких ссылок (что может быть желательно, если вы пытаетесь создать резервную копию своего хранилища), но при этом избегать обычного механизма передачи данных, учитывающего git, можно использовать --no-hardlinks.
-s
Когда репозиторий для клонирования находится на локальном компьютере, вместо использования жестких ссылок автоматически настраивает .git / objects / info / alternates для совместного использования объектов с исходным репозиторием.Результирующий репозиторий запускается без какого-либо собственного объекта.
ПРИМЕЧАНИЕ: это возможно опасная операция;не используйте его, если вы не понимаете, что он делает.Если вы клонируете свой репозиторий, используя эту опцию и , затем удаляете ветви (или используете любую другую команду git, которая делает любую существующую фиксацию без ссылок) в исходном репозитории, некоторые объекты могут стать не ссылками (или зависать).Эти объекты могут быть удалены с помощью обычных операций git (таких как git commit), которые автоматически вызывают git gc --auto .
Поэтому, когда вы делаете git clone /path/to/repo
, вы копируете объекты (или создание жестких ссылок), и вы получите висячий объект в этом случае.В других случаях (с использованием git-протоколов, ssh, файловых протоколов и т. Д.) Вы никогда не получите висячие объекты в клоне.
Узнайте, как происходит транспортировка - http://progit.org/book/ch9-6.html