Git - Перемещение каталога Git на другой диск, сохраните исходный код, где он находится
У меня есть исходный код и .git-папка на небольшом быстром ssd, я бы хотел иметь каталог .git на моем втором более медленном hdd и сохранить мой рабочий код на моем быстром меньшем ssd, возможно ли это? как?
спасибо.
Я предполагаю, что моя локальная рабочая папка .git будет расти со временем (с новыми версиями), и поэтому у меня есть смысл иметь ее на моем более крупном локальном hdd. Рабочая копия не растет так быстро, что делает ее чувствительной к ssd, так как она быстрее компилируется.
Другим интересным бонусом является то, что у меня будет исходный код (рабочий код и ретрансляция .git) на двух дисковых дисках, что является большей защитой для ноутбука....
Я использую окна
Ответы
Ответ 1
Да, вы можете
Symlinks
Вы можете символически (или использовать точки соединения) директорию .git
в другом месте:
$ cd my/project
$ mv .git /over/here/.git
ln -s /over/here/.git .
И репозиторий будет работать нормально.
gitdir:
Или вы можете заменить папку .git
файлом, который сообщает git, где действительно находится папка .git
. Это точно, как git подмодули устанавливаются по умолчанию в версии 1.7.8 или новее.
Действия по повторной настройке существующего заказа:
- переместите директорию .git туда, где она должна быть
- замените его на файл
.git
, содержащий: gitdir: path/to/.git
- define
core.worktree
, чтобы указать на рабочую копию
Как script, который будет:
$ cd my/project
$ mv .git /tmp/.git
$ echo "gitdir: /tmp/.git" > .git
$ git config core.worktree $PWD
Переходы по Windows
Легко создавать соединения в Windows с помощью junction.exe
от Microsoft.
> junction.exe c:\fast-ssd\proj\.git d:\slow-hdd\proj\.git
Ответ 2
Возможно, что каталог репозитория Git находится в другом месте, чем корень вашей рабочей копии, но я не уверен, что он работает на разных дисках.
Вы можете установить каталог репо, который будет помещен в другой каталог, в то время как клонирование с флагом --separate-git-dir
:
$ git clone --separate-git-dir=<path to directory for repo> \
<remote url> <path for working copy>
Для репо, которое уже было клонировано, вы можете установить другой путь для репо и/или рабочей копии с помощью --git-dir=<path>
и --work-tree=<path>
для git
.
Вы также можете проверить конфигурацию core.worktree
.
Ответ 3
Собственно, вы можете просто запустить
$ git init --separate-git-dir=[path to directory for .git data]
git init безопасен для использования в уже клонированном репозитории
Запуск git init в существующем репозитории безопасен. Он не будет перезаписывать вещи, которые уже существуют. Основная причина перезапуска git init - это сбор недавно добавленных шаблонов (или перемещение репозитория в другое место, если задано --separate- git -dir).
Ссылка на git страница руководства