2016-10-08 7 views
2

Есть ли способ нажать файл, внешний для репозитория git, помещая символическую ссылку.Могу ли я добавить файл, поместив символическую ссылку в репозиторий git?

Я хочу, например, нажать файл /root/my_file и создать символическую ссылку my_symbolic_link в репозитории git.

# ls -lA                              
drwxr-xr-x 7 root root 4096 Oct 8 07:55 .git/ 
lrwxrwxrwx 1 root root 26 Oct 8 7:58 my_symbolic_link -> /root/my_file 
+0

Я думаю, что это будет только добавить самое ссылку ... – beatngu13

+0

По умолчанию да, я могу настроить мерзавец, чтобы изменить поведение – user123456

+0

я не думаю, что так, даже с жесткими ссылками (см [здесь] (HTTP: //stackoverflow.com/q/3729278)). – beatngu13

ответ

3

Символическая ссылка - это файл, содержащий ссылку на другой файл в вашей файловой системе. Вы можете добавить символическую ссылку в свой репозиторий, но, делая это, вы добавляете ссылку только на другой файл, а не на другой файл.

Вы можете достичь того, чего хотите, создавая жесткую ссылку вместо символической ссылки. Жесткая ссылка - это связь между именем файла и его содержимым (и метаданными) на уровне файловой системы. Создавая жесткую ссылку на файл и добавляя его в свой репозиторий, вы добавляете этот связанный файл. На POSIX-совместимых операционных систем (как все) дистрибутивов Linux вы можете создать жесткую ссылку так:

ln /root/my_file my_hard_link 

Для получения дополнительной информации о различного рода ссылки см this question и его ответы.

UPDATE: Обратите внимание: git ничего не знает о жестких ссылках. Добавление жесткой ссылки в git repo означает, что вы добавляете содержимое этого связанного файла. Git не знает, что файл, который вы только что добавили, является жесткой ссылкой. Добавление жесткой ссылки на репо не приведет к ее разрыву, но проверка его из репо создаст новую копию этого файла и не воссоздает эту жесткую ссылку. «Проверяя это», я имею в виду только команду git checkout, но также такие операции, как clone, вводя новую копию репо, удаляя жесткую ссылку и используя git reset, чтобы ее воссоздать, или pull в новой версии этого жестко связанного файла с удаленного Сделки рЕПО.

Чтобы резюмировать - ваши два варианта:

  • Добавить мягкую ссылку на репозиторий - это добавит только информацию о соединении, а не содержание связанного файла.
  • Добавить жесткую ссылку на репо - это добавит контент связанного файла. Хотя он не будет добавлять информацию о ссылке, он также не будет разорвать связь до следующего раза, когда вы проверите, что жесткий файл связан с репо.

 Смежные вопросы

  • Нет связанных вопросов^_^