Связывание одного файла из другого репозитория git - PullRequest
39 голосов
/ 29 сентября 2011

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

1 Ответ

30 голосов
/ 29 сентября 2011

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

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

Теоретически, " 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", и она работает
...