Связывание одного файла с другим хранилищем git

Как вы связываете один файл из другого репозитория git в свой собственный репозиторий? Мне не нужен полный репозиторий, просто один файл. Использование git submodule похоже на правильный путь, но он хочет захватить все это.

Ответ 1

Учитывая, что единицей работы для git является хранилище (или, точнее, содержимое хранилища), я не думаю, что вы можете легко интегрировать один файл.

Если вам не нужна его история, вы можете просто скопировать ее в репо.
Но если вам нужна история, то некоторые git filter-branch (как в " git: Как отделить библиотеку от проекта? Filter-branch, subtree? ") В порядке. Это кажется большим усилием только для одного файла.

Теоретически, " git: symlink/ссылка на файл во внешнем репозитории " предлагает решение, сочетающее подмодуль и символическую ссылку.
(от Павла Шимерда)

$ git submodule add /url/submodule/<reponame>
$ ln -s <reponame>/path/to/<linked_file>
$ git add .gitmodules <linked_file>
$ git commit -m "add a symbolic link to <linked_file> with the respective submodule"

С 2011 года (оригинальный ответ выше) Гавриил сообщает в комментариях, что:

  • Когда я извлекаю основной репо, связанный файл не является символической ссылкой, а вместо этого содержимое файла - " <reponame>/path/to/<linked_file> ". Другими словами, git фиксирует цель символической ссылки как содержимое файла.
  • Но основная идея работает.
    Я использую " submodule/path/to/file " вместо " file ", и это работает