Подтвердить что ты не робот

Git: Как добавить внешний каталог в репозиторий?

Я хочу добавить внешний каталог в существующий репозиторий.

Внешний Dir: /Главная/некоторые/каталог

Рабочий дир: /htdocs/.git

Если я попытаюсь выполнить следующую команду из каталога /htdocs:

git добавить /home/some/directory

Я получаю сообщение об ошибке: fatal: '/home/some/directory' находится вне репозитория

4b9b3361

Ответ 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