2010-10-08 11 views
16

Mam istniejące repozytorium Git na moim komputerze lokalnym. Chciałbym przenieść to repozytorium do mojego serwera WWW, a następnie git clone na moim komputerze lokalnym, aby sprawdzić moje repozytorium z serwera. Planuję, a następnie rozwijam na moim lokalnym komputerze i przesyłam aktualizacje z powrotem na serwer. Mogę ssh z mojego lokalnego komputera na serwer, ale nie odwrotnie. Jak powinienem to zrobić? Myślę, że powinno się jakoś używać git bundle, jednak kiedy próbowałem wykonać mój pakiet na moim serwerze, otrzymałem "ostrzeżenie: zdalny HEAD odwołuje się do nieistniejącego ref, nie może kasować". Na moim lokalnym komputerze działa system OS X, na serwerze działa Linux.Git: przenieś istniejące repozytorium z komputera na serwer, sklonuj z serwera

Odpowiedz

29

Na serwerze Linux, w nowym katalogu zrobić:

git init --shared --bare 

Następnie na komputerze lokalnym:

git remote add origin server:path/to/repo 
git push --all origin 

Po tym, że serwer będzie miał pełną kopię repozytorium, a będziesz mógł naciskać i ciągnąć do i od niego. Nie ma potrzeby sprawdzania innego klonu z serwera, gdy już masz go na miejscu.

+0

Wykonując 'git push origin master', pojawia się długi błąd, który zaczyna się od" Total 0 (delta 0), ponownie użyto 0 (delta 0) zdalny: błąd: odmowa aktualizacji odjętej gałęzi: refs/heads/master remote: error: Domyślnie aktualizuje bieżącą gałąź w repozytorium "open-to-bare". Jedyną zawartością moich repozytoriów na serwerze Linux jest ".git HEAD branches config opis hooks info refs obiektów", tak właśnie stworzono polecenie 'git init --shared --bare'. Używam git 1.7.1.1 na obu komputerach. –

+0

Whoop, nieważne! Mam to teraz. Właściwie nie utworzyłem nowego katalogu na serwerze Linux, właśnie usunąłem to, co uważałem za całą jego zawartość przed uruchomieniem polecenia 'git init ...'. Tworząc nowy katalog, 'git init ...' ing it, zmieniając w celu użycia tego pochodzenia z moich lokalnych repozytoriów, a następnie pchanie działało. –

+0

Działa to zasadniczo, ale potrzebowałem kilku dodatkowych kroków, aby to zadziałało, ponieważ mój serwer uruchamia niestandardowy port ssh: na OS X. Zacząłem od zainstalowania ssh-askpass (https://github.com/ markcarver/mac-ssh-askpass), następnie musiałem skonfigurować port w ~/.ssh/config (zobacz http://stackoverflow.com/a/5738592/217953), używając adresu URL w stylu SCP. – xgretsch

2

Jak o tym:

local> cd my_repo.git 
local> git remote add origin [email protected]:/path/to/my_repo.git 
local> git config branch.master.remote origin 
local> git config branch.master.merge refs/heads/master 
local> git push origin master 

To wyśle ​​dane z lokalnego repo do serwera. Następnie wykonaj następujące czynności:

local> cd .. 
local> git clone [email protected]:/path/to/my_repo.git my_repo2.git 

Następnie zostanie sklonowany z serwera. Po usatysfakcjonowaniu możesz pozbyć się oryginalnego repozytorium i ewentualnie zmienić nazwę drugiego.

9

Zamiast "git push origin master" użyj "git push --all origin", abyś poruszał się po wszystkich gałęziach, a nie tylko gałęzi głównej.

Powiązane problemy