Как переместить мой локальный репозиторий Git в удаленный репозиторий Git - PullRequest
58 голосов
/ 24 января 2012

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

Спасибо!

РЕДАКТИРОВАТЬ: Спасибо за все отличные ответы.Ответ, который я выбираю, имеет смысл для моих ограниченных знаний GIT.

РЕДАКТИРОВАТЬ # 2: я заметил, что мой первоначальный выбор ответа не скопировал мои теги.git push --mirror <path> копирует теги.

Ответы [ 8 ]

63 голосов
/ 24 января 2012

На вашем сервере создайте git-репозитории как голое хранилище

git init --bare repo.git

затем нажмите коммиты вашего локального репозитория

git push --mirror ssh://yourserver/~/repo.git
57 голосов
/ 24 января 2012

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

git init --bare /path/to/repo

Затем добавьте удаленное хранилище в локальное (ssh: // или https://)

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

И, push-файлы / коммиты

git push origin master

И, наконец, push-теги

git push origin --tags
10 голосов
/ 24 января 2012

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

git remote add <remote> <url>

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

git push <remote> <branch>

Чтобы переместить коммиты в начало координат.<branch> - это ветвь, которую вы нажимаете (часто «мастер»).

4 голосов
/ 24 января 2012

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

git remote add name url

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

На стороне сервера (система на основе 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 будет git@yourserver:projectName.

3 голосов
/ 24 января 2012

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

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

2 голосов
/ 03 апреля 2017

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

  1. Создайте новый пустой репозиторий вthe remote.
  2. В локальном репозитории установите новый пульт в качестве источника:

    cd localrepo

    git remote add origin REMOTEURL # (проверьтес помощью git remote -v)

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

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

  4. Передать все локальные теги на удаленный компьютер:

    git push --tags origin

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


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

  1. Создайте новыйпустой репозиторий на удаленном компьютере.
  2. В локальном репозитории переместите все его ветви на удаленный компьютер

    cd localrepo.git

    git push --all REMOTEURL

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

    git push --tags REMOTEURL

0 голосов
/ 18 апреля 2018

У меня есть локальное хранилище с журналами фиксации.Я хотел добавить его в новый удаленный репозиторий github, сохранив все журналы коммитов.Вот как:

  1. создать удаленное репо на github.И получите URL репо от зеленой кнопки «Клонировать или скачать», например, https://github.com/mhisoft/eVault.git

  2. , если локальный репозиторий был прикреплен к старому orgin.сначала удалите его

    git remote удалите источник

  3. Добавьте существующий репозиторий из командной строки

    git remoteдобавить источник https://github.com/mhisoft/eVault.git

    git push -u мастер происхождения

0 голосов
/ 21 сентября 2017

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

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

, чтобы доказать, что новый репо в порядке, с git status / log и т. Д., Чтобы я чувствовал себя лучше

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

rm -rf localrepo.git localrepo-prev
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...