2009-09-09 2 views
120

Я просто изучаю git, и есть что-то, что я не могу обработать. После создания и использования репозитория git локально на моем Mac, могу ли я скопировать копию на другой сервер где-нибудь еще? Я за брандмауэром, поэтому, к сожалению, я не могу запустить git clone с другой машины.git push/clone to new server

ответ

124
  1. git remote addимяURL
  2. git pushимяфилиал

Пример :

git remote add origin [email protected]:foo/bar.git 
git push origin master 

См. Документы для git push - вы можете установить пульт дистанционного управления в качестве пульта дистанционного управления по умолчанию для данной ветки; если вы этого не сделаете, то имя origin является особенным. Только git push будет делать то же самое, что и git push originthisbranch (для любой отрасли, в которой вы находитесь).

+6

Для ближе эффект как ** «клонирование клонирования» **, а не просто * pushinh a _branch_ *: ['git push -u -all'] (http://linux.die.net/man/1/git-push) мы можем опустить 'origin', поскольку это имя по умолчанию для pushing и' -u' также будет отслеживать удаленные ветви. – cregox

+9

Достаточно создать пустой сервер на сервере с помощью 'git init --bare/foo/bar.git', а затем нажать локальный (например, в этом ответе). Вам не нужно передавать что-либо с помощью zipped/tared на сервер. – OderWat

+1

Вторичный OderWat. Например, выполните «git init -bare foo/bar.git» во время входа в пульт (т. Е. [email protected]), тогда «удаленное начало» будет иметь пункт назначения для ввода.Для примера github я думаю, что вы можете использовать веб-интерфейс репозитория/добавления github, а затем следовать рекомендациям «Push an existing repository из командной строки». Github рекомендует «-u» вызвать ссылку отслеживания. –

1

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

git push <remote repo> <your branch> 
9

Существует множество способов перемещения репозиториев, git bundle - это хороший способ, если у вас недостаточно доступность сети. Поскольку репозиторий Git - это действительно каталог, полный файлов, вы можете «клонировать» репозиторий, создавая копию каталога .git, каким бы то ни было способом.

Самый эффективный способ - использовать внешний репозиторий где-нибудь (используйте GitHub или настройте Gitosis), а затем git push.

74

Что вы можете сделать, это первое, на локальном компьютере, сделать голую клон репозитория

git clone --bare /path/to/repo /path/to/bare/repo.git # don't forget the .git! 

Теперь архив вверх новый каталог repo.git с помощью смолы/GZIP или любой другой ваш любимый инструмент архивирования, а затем скопируйте архив на сервер.

Unarchive the repo на вашем сервере. Затем вам нужно настроить пульт дистанционного управления на локальном хранилище:

git remote add repo-name [email protected]:/path/to/repo.git #this assumes you're using SSH 

тогда Вы сможете нажать на и тянуть с удаленного репо с:

git push repo-name branch-name 
git pull repo-name branch-name 
+4

Не могли бы вы объяснить комментарий «не забывайте .git!»? Где пункт добавления .git к концу папки? Когда я должен это делать? Только конвенция? – lumbric

+5

«.git» - это просто неофициальный стандарт идентификации голого git repo. –

+3

. Я не следую этой идее ... разве это не разрушает всю цель создания сервера git и фактически * использует его * для " переносить/копировать/сохранять вещи в синхронизации/резервном копировании, а не * молчать * и использовать какой-либо другой метод? – cregox

4
remote server> cd /home/ec2-user 
remote server> git init --bare --shared test 
add ssh pub key to remote server 
local> git remote add aws ssh://[email protected]<hostorip>:/home/ec2-user/dev/test 
local> git push aws master