Перемещение репозитория git

Этот вопрос может быть глупым, но мне это интересно некоторое время. Он о репозиториях git, но я предполагаю, что это то же самое для локальных репозиториев для других DVCS.

Давайте скажем, что мой проект выглядит так:

  • Project
    • .git
    • все остальные папки в проекте

Итак, как это работает, если вы правильно настроите его?

Давайте скажем, что я перемещаю папку Project где-то в другом месте, нужно ли мне что-то менять? Или это все материалы репозитория в папке .git, относимые только к папке Project, игнорируя все дерево файлов над Проектом.

Я уверен, что перемещение проекта не имеет значения, но я просто хотел убедиться.

Ответ 1

Да, все в .git относительное. Если вы добавили репозиторий как именованный пульт в другой репозиторий, вам придется изменить удаленный URL-адрес в этом другом репозитории.

Ответ 2

Я обнаружил, что подмодули не относительны в git.

Итак, если вы хотите переместить проект, содержащий субмодули, вы должны отредактировать файл .git в подмодуле, а также атрибут "worktree" в файле конфигурации подмодуля, который хранится в родительском .git/modules/MODULENAME/config.

Ответ 3

Показать текущий пульт (конечно, это необязательный шаг):

$ 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, поэтому, возможно, это лучший способ сделать это, но это сработало для меня.

Ответ 4

Нет, вам не придется ничего менять. Это

  • при условии, что скрипты не установлены GIT_DIR, GIT_WORKTREE или GIT_INDEX напрямую (маловероятно)
  • у вас нет внешних репозиториев, указывающих на эту копию

    • если вам это нужно, вы должны будете их переустановить, используя

      git remote set-url [--push] origin [email protected]:/home/user/newlocation/Project
      

(происхождение должно быть именем пульта дистанционного управления, имя источника по умолчанию при клонировании из удаленного репо)

Ответ 5

Вы можете переместить каталог git с одной машины на другую или сказать, что вы хотите перенести папку проекта.

Вся информация о происхождении хранится в папке ".git", которая создается при инициализации репозитория git в каталоге в вашей системе.

Процедура

  • : переместите папку проекта в другое место.
  • : Если папка проекта перемещается на новый компьютер, создайте соответствующую пару ключей SSH.
  • : Скажите git, кто вы используете: git config --global user.email "your_git_email_id @youremail"