Перемещение репозитория git на другой сервер

StackOverflow https://stackoverflow.com/questions/1631346

  •  06-07-2019
  •  | 
  •  

Вопрос

У меня есть git-клон / репозиторий на сервере разработки, но сейчас я перехожу на другой.Я не хочу передавать все мои локальные ветки и изменения в основной репозиторий, так как же я могу сделать точную копию всего, что есть на oldserver, на newserver?

Я пытался oldserver:~$ scp -rp project newserver:~/project

но тогда я просто получаю множество ошибок "typechange" при попытке что-либо сделать на newserver.

Кто-то что-то говорил о x-режимах, но как я могу сохранить это при перемещении файлов между серверами?

Это было полезно?

Решение

Если вы хотите git-решение, попробуйте

git clone --mirror <oldurl> <newurl>

хотя это только для голых репозиториев.

Если это не пустое хранилище, вы также можете сделать нормальный клон, а затем сделать что-то вроде этого:

git fetch origin
git branch -r | grep '^ *origin/[^ ]*

Средний шаг, конечно, может быть выполнен 5000 различными способами, но это один из них! (обратите внимание, что строка продолжения \ не нужна после канала в bash - он знает, что ему нужно больше ввода)

Наконец, я бы предложил использовать rsync вместо scp (возможно, с опциями -avz?), если вы хотите напрямую копировать. (Что это за ошибки при смене типа?)

| while read rb; do git branch --no-track ${rb#*/} $rb; done git remote rm origin

Средний шаг, конечно, может быть выполнен 5000 различными способами, но это один из них! (обратите внимание, что строка продолжения \ не нужна после канала в bash - он знает, что ему нужно больше ввода)

Наконец, я бы предложил использовать rsync вместо scp (возможно, с опциями -avz?), если вы хотите напрямую копировать. (Что это за ошибки при смене типа?)

Другие советы

Я действительно делал это, и все, что я сделал, - это сначала загрузил репозиторий и скопировал его заново.Я бы подумал, что scp -rp тоже сработал.

"Изменение типа" обычно относится к таким вещам, как превращение символической ссылки в файл или наоборот.Работают ли два сервера под управлением одной и той же операционной системы?

Возможно, вы также захотите попробовать простое тупое решение - не беспокойтесь о том, как там произошли смены типов, но позвольте git исправить их командой reset:

git reset --hard HEAD

Это имеет смысл, только если (1) все проблемы относятся к извлеченным файлам (а не к самой структуре репозитория) и (2) вы не внесли никаких изменений в newserver , которые вам нужно сохранить.

Учитывая эти предостережения, это сработало для меня, когда я обнаружил, что сталкиваюсь с той же проблемой, и не требует от вас думать о внутренностях git или о том, насколько хорошо ваш процесс передачи файлов сохраняет атрибуты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top