Ответ 1
Да, все в .git
относительное. Если вы добавили репозиторий как именованный пульт в другой репозиторий, вам придется изменить удаленный URL-адрес в этом другом репозитории.
Этот вопрос может быть глупым, но мне это интересно некоторое время. Он о репозиториях git, но я предполагаю, что это то же самое для локальных репозиториев для других DVCS.
Давайте скажем, что мой проект выглядит так:
Итак, как это работает, если вы правильно настроите его?
Давайте скажем, что я перемещаю папку Project где-то в другом месте, нужно ли мне что-то менять? Или это все материалы репозитория в папке .git, относимые только к папке Project, игнорируя все дерево файлов над Проектом.
Я уверен, что перемещение проекта не имеет значения, но я просто хотел убедиться.
Да, все в .git
относительное. Если вы добавили репозиторий как именованный пульт в другой репозиторий, вам придется изменить удаленный URL-адрес в этом другом репозитории.
Я обнаружил, что подмодули не относительны в git.
Итак, если вы хотите переместить проект, содержащий субмодули, вы должны отредактировать файл .git
в подмодуле, а также атрибут "worktree" в файле конфигурации подмодуля, который хранится в родительском .git/modules/MODULENAME/config
.
Показать текущий пульт (конечно, это необязательный шаг):
$ git remote show origin
* remote origin
URL: [email protected]:project.git
Remote branch(es) merged with 'git pull' while on branch master
master
Tracked remote branches
master
Что нам нужно сделать, так это удалить текущее происхождение и добавить новое:
$ git remote rm origin
$ git remote add origin [email protected]:project.git
$ git remote show origin
* remote origin
URL: [email protected]:project.git
Remote branch(es) merged with 'git pull' while on branch master
master
error: refs/remotes/origin/HEAD points nowhere!
New remote branches (next fetch will store in remotes/origin)
master
Не беспокойтесь о ошибке, показанной последней командой. Первое вытягивание из источника будет зафиксировано:
$ git pull
From [email protected]:project.git
* [new branch] master -> origin/master
Already up-to-date.
$ git remote show origin
* remote origin
URL: [email protected]:project.git
Remote branch(es) merged with 'git pull' while on branch master
master
Tracked remote branches
master
Im все еще свежий с Git, поэтому, возможно, это лучший способ сделать это, но это сработало для меня.
Нет, вам не придется ничего менять. Это
у вас нет внешних репозиториев, указывающих на эту копию
если вам это нужно, вы должны будете их переустановить, используя
git remote set-url [--push] origin [email protected]:/home/user/newlocation/Project
(происхождение должно быть именем пульта дистанционного управления, имя источника по умолчанию при клонировании из удаленного репо)
Вы можете переместить каталог git с одной машины на другую или сказать, что вы хотите перенести папку проекта.
Вся информация о происхождении хранится в папке ".git", которая создается при инициализации репозитория git в каталоге в вашей системе.
Процедура