Ответ 1
На вашем сервере создайте репозитории git как открытый репозиторий
git init --bare repo.git
затем нажмите фиксации своего локального репозитория
git push --mirror ssh://yourserver/~/repo.git
У меня есть различные проекты Git, которые находятся на моей локальной машине. У меня есть сервер, который я бы хотел использовать в качестве удаленного репозитория Git. Как перенести локальные Git репозитории (проекты) на мой сервер, сохранив историю без изменений?
Спасибо!
EDIT: Спасибо за все замечательные ответы. Ответ, который я выбираю, имеет смысл для моего ограниченного знания Git.
ИЗМЕНИТЬ № 2:
Я заметил, что мой оригинальный ответ не копировал мои теги. git push --mirror <path>
копирует теги.
На вашем сервере создайте репозитории git как открытый репозиторий
git init --bare repo.git
затем нажмите фиксации своего локального репозитория
git push --mirror ssh://yourserver/~/repo.git
Сначала создайте репозиторий git на вашем сервере
git init --bare /path/to/repo
Затем добавьте удаленное репо на локальный
git remote add origin ssh://server/path/to/repo
И, наконец, нажмите
git push origin master
Существует хороший учебник по блог Ralf Wernders. Предполагая, что вы знаете, как создать репозиторий на сервере или что уже сделано:
git remote add <remote> <url>
Чтобы добавить удаленный доступ в локальный репозиторий. <remote>
- имя пульта (часто "происхождение" ). <url>
- это URL-адрес вашего репозитория с доступом для записи (например, git @...)
git push <remote> <branch>
Переместить фиксации в начало. <branch>
- это ветвь, которую вы нажимаете (часто "мастер" ).
Если вам нужен обычный (например: не голый) репозиторий, просто скопируйте его. Нет ничего особенного, что нужно сделать.
Если вы хотите использовать голый репозиторий на сервере, просто инициализируйте его на сервере, добавьте его как удаленный в "локальную" копию, а затем нажмите на него. (git push --mirror
получит все.)
Создайте репозиторий 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
.
Если у вас есть автономный локальный репозиторий рабочих деревов (папка с ".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
Возможно, это "назад", но я всегда делал
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