Как переместить локальный репозиторий Git в удаленный репозиторий Git - программирование
Подтвердить что ты не робот

Как переместить локальный репозиторий Git в удаленный репозиторий Git

У меня есть различные проекты Git, которые находятся на моей локальной машине. У меня есть сервер, который я бы хотел использовать в качестве удаленного репозитория Git. Как перенести локальные Git репозитории (проекты) на мой сервер, сохранив историю без изменений?

Спасибо!

EDIT: Спасибо за все замечательные ответы. Ответ, который я выбираю, имеет смысл для моего ограниченного знания Git.

ИЗМЕНИТЬ № 2: Я заметил, что мой оригинальный ответ не копировал мои теги. git push --mirror <path> копирует теги.

4b9b3361

Ответ 1

На вашем сервере создайте репозитории git как открытый репозиторий

git init --bare repo.git

затем нажмите фиксации своего локального репозитория

git push --mirror ssh://yourserver/~/repo.git

Ответ 2

Сначала создайте репозиторий git на вашем сервере

git init --bare /path/to/repo

Затем добавьте удаленное репо на локальный

git remote add origin ssh://server/path/to/repo

И, наконец, нажмите

git push origin master

Ответ 3

Существует хороший учебник по блог Ralf Wernders. Предполагая, что вы знаете, как создать репозиторий на сервере или что уже сделано:

git remote add <remote> <url>

Чтобы добавить удаленный доступ в локальный репозиторий. <remote> - имя пульта (часто "происхождение" ). <url> - это URL-адрес вашего репозитория с доступом для записи (например, git @...)

git push <remote> <branch>

Переместить фиксации в начало. <branch> - это ветвь, которую вы нажимаете (часто "мастер" ).

Ответ 4

Если вам нужен обычный (например: не голый) репозиторий, просто скопируйте его. Нет ничего особенного, что нужно сделать.

Если вы хотите использовать голый репозиторий на сервере, просто инициализируйте его на сервере, добавьте его как удаленный в "локальную" копию, а затем нажмите на него. (git push --mirror получит все.)

Ответ 5

Создайте репозиторий git на сервере (вы можете использовать gitolite/gitosis или обычную учетную запись пользователя + pubkey ssh auth), добавьте сервер в локальный репозиторий git, используя

git remote add name url

и использовать git push -u name master (-u обозначает текущую ветвь как отслеживание, поэтому вместо git pull git pull name master) можно git pull).

На стороне сервера (система на основе debian):

adduser --system --home /home/git --bash /bin/bash git
su - git
mkdir .ssh
cat yourkey.pub > .ssh/authorized_keys

Теперь создайте новый открытый репозиторий для каждого локального репозитория, используя

mkdir projectName
cd projectName
git init --bare

После этого URL будет [email protected]:projectName.

Ответ 6

Если у вас есть автономный локальный репозиторий рабочих деревов (папка с ".git" ) внутри, которую вы хотите добавить к:

  • Создайте новый пустой репозиторий на пульте дистанционного управления.
  • В локальном репозитории установите новый пульт в качестве источника:

    cd localrepo

    git удаленный добавочный источник REMOTEURL # (проверьте с помощью git remote -v)

  • Нажмите все локальные ветки на удаленный компьютер и установите каждую локальную ветвь для отслеживания соответствующей удаленной ветки:

    git push --all --set-upstream origin # (проверить с помощью git branch -vv)

  • Нажмите все локальные теги на пульте дистанционного управления:

    git push -tags origin

В этот момент локальный репозиторий будет действовать так же, как клонированный с удаленного.


Если у вас есть голый локальный репозиторий (папка с именем, заканчивающимся на .git), которую вы просто хотите скопировать на удаленный:

  • Создайте новый пустой репозиторий на пульте дистанционного управления.
  • В локальном репозитории нажмите все свои ветки на удаленный

    cd localrepo.git

    git push --all REMOTEURL

  • Нажмите все локальные теги на пульте дистанционного управления:

    git push --tags REMOTEURL

Ответ 7

Возможно, это "назад", но я всегда делал

git clone --bare localrepo localrepo.git
scp -r localrepo.git remoteserver:/pathTo
mv localrepo localrepo-prev
git clone remoteserver:/pathTo/localrepo

доказать, что новое репо в порядке, с git статусом/журналом и т.д., чтобы я чувствовал себя лучше

перемещать любые файлы, не находящиеся под контролем версий, от -prev до нового localrepo

rm -rf localrepo.git localrepo-prev