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 страница руководства