Отслеживаемые файлы с несколькими ссылками не приведут к значительному росту хранилища объектов в Git, поскольку каждая ссылка будет представлена одним и тем же объектом BLOB-объекта. Однако ваше рабочее дерево может в конечном итоге расти из-за неработающих ссылок.
Git не отслеживает, являются ли отслеживаемые файлы рабочего дерева жесткими ссылками на один и тот же файл.
Git оставит файлы многосвязных, отслеживаемых, рабочих деревьев в покое, если вы не попросите его сделать что-либо, что повлечет за собой изменение содержимого этих путей или удаление записей каталога путей. Но если вы должны были (например) извлечь старый коммит или ветвь, а затем переключиться обратно на свой обычный, самый последний ветвь / коммит, то Git в конечном итоге «сломает» жесткие ссылки (заменив затронутые пути новыми (но идентичными) ) файлы вместо воссоздания вашей многосвязной ситуации).
Чтобы восстановить ваш многосвязный статус, вы можете написать программу для поиска идентичных файлов и связать их с любым из файлов. Такая операция «повторного связывания» может быть более сложной, если все ссылки не находятся в самом рабочем дереве или, по крайней мере, не в каком-то легко идентифицируемом «внешнем» месте (т. Е., Вероятно, будет трудно восстановить ссылки, если вы создаете ссылки «Случайные» файлы со всего вашего домашнего каталога в «резервное» хранилище и использование Git для изменения рабочего дерева).
Идея появилась в списке рассылки Git: