Git: Как добавить внешний каталог в репозиторий?
Я хочу добавить внешний каталог в существующий репозиторий.
Внешний Dir:
/Главная/некоторые/каталог
Рабочий дир:
/htdocs/.git
Если я попытаюсь выполнить следующую команду из каталога /htdocs:
git добавить /home/some/directory
Я получаю сообщение об ошибке:
fatal: '/home/some/directory' находится вне репозитория
Ответы
Ответ 1
Если мне нужно сделать что-то подобное, я бы обычно переместил этот внешний файл или каталог в репозиторий git и символически привязал его к исходному местоположению новому.
mv /home/some/directory /htdocs/directory
ln -s /htdocs/directory /home/some/
git add ./directory
Я использую этот метод, когда я разрабатываю подключаемый модуль для приложения, которое я хочу сохранить под контролем версий, но должен хранить его в определенном месте.
Ответ 2
У меня была такая же ошибка... Погубил ее до смерти... не так много вышло.
Ответ на христианский ответ:
git --work-tree=/ add /home/some/directory
Но потом "дерево работы" заставило меня идти. Я grep'd всех Git docs и придумал core.worktree
.
Я использовал
git config --global core.worktree /
И вуаля! Теперь я могу добавить из любой директории в системе.
Я не знаю, вызовет ли это проблемы в других местах, но я постараюсь обновить его, когда я пойду.
Ответ 3
git --work-tree=/ add /home/some/directory
Ответ 4
Там действительно простое решение.
Скажем, вы Git -repo находится в /var/data/my -app, и вы хотите добавить/var/data/public/в это репо. Вы не можете использовать 'add', потому что Git не будет добавлять ресурсы вне корневого каталога repo. Итак..
Решение:
-
Переместите каталог/var/data/public/в свой Git -repo root (/var/data/my-app).
-
Создайте сим-ссылку (символическую ссылку) внутри /var/data/public в папку /var/data/my -app/public, используя: ln -s source_file_or_directory virtual_file_or_directory
Затем просто добавьте перемещенный файл или каталог в Git с помощью git add
обычным способом. Ваш исходный элемент управления Git теперь отслеживает нужный файл/папку, а ваш sym-link во внешнем каталоге гарантирует, что файл/папка будет доступным для всего остального!
Ответ 5
Если код, который вы хотите добавить в свое репо, не слишком большой, вы также можете автоматически копировать его в свое репо каждый раз, прежде чем нажимать.
В моем случае мне, например, нужен один R файл, который я часто изменяю в нескольких репозиториях, и я написал небольшую оболочку script:
#!/usr/bin/env bash
cp -r /some/directory/file.R .
git add .
git commit -m "add"
git push
... и я запустил этот script, чтобы нажать все изменения, в том числе в каталоге/some/.
Ответ 6
Или вы можете использовать подмодуль, если хотите работать с различными репозиториями git (ln не работает таким образом). Попробуйте "man git -submodule".
Ответ 7
Добавить символическую ссылку в каталог в репозитории. Затем добавьте то же самое.
ln -s /home/some/directory/
git add directory