Перемещение репозитория git - PullRequest
61 голосов
/ 31 октября 2011

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

Допустим, мой проект такой же, когда он запускается:

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

Так вот как это будет работать, если вы все настроите правильно?

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

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

Ответы [ 5 ]

62 голосов
/ 02 июля 2012

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

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

23 голосов
/ 31 октября 2011

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

10 голосов
/ 07 октября 2013

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

$ git remote show origin
* remote origin
URL: git@oldserver: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 git@newserver:project.git
$ git remote show origin
* remote origin
URL: git@newserver: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 git@newserver:project.git
* [new branch]      master     -> origin/master
Already up-to-date.
$ git remote show origin
* remote origin
URL: git@newserver:project.git
Remote branch(es) merged with 'git pull' while on branch master
master
Tracked remote branches
master

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

6 голосов
/ 31 октября 2011

Нет, вам не нужно ничего менять.То есть

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

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

      git remote set-url [--push] origin user@yourhost:/home/user/newlocation/Project
      

(источник должен быть именемremote; origin - имя по умолчанию при клонировании из удаленного репозитория)

1 голос
/ 23 января 2013

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

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

Процедура

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