2009-09-09 15 views
120

Po prostu uczę się git i jest coś, czego nie mogę wypracować. Po utworzeniu i użyciu repozytorium git lokalnie na moim Macu, czy mogę przesłać kopię do innego serwera gdzie indziej? Jestem za firewallem, więc niestety nie mogę uruchomić git clone z innego komputera.git push/clone na nowy serwer

Odpowiedz

124
  1. git remote addnazwaurl
  2. git pushnazwaoddział

Przykład :

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

Zobacz dokumentację dla git push - możesz ustawić pilota jako domyślny pilot dla danej gałęzi; jeśli nie, nazwa origin jest wyjątkowa. Tylko git push sam zrobi to samo, co git push originthisbranch (dla dowolnej gałęzi, na której jesteś).

+6

Dla bliżej efekt jako ** "push cloning" ** zamiast tylko * pushinh a _branch_ *: ['git push -u --all'] (http://linux.die.net/man/1/git-push) możemy pominąć 'origin', ponieważ jest to domyślna przyjęta nazwa dla wypychania, a' -u' będzie również śledzić odległe gałęzie. – cregox

+9

Powinno wystarczyć utworzenie pustego repozytorium na serwerze za pomocą 'git init --bare/foo/bar.git', a następnie wypchnięcie tamtejszego lokalnego (jak w tej odpowiedzi). Nie musisz przesyłać niczego z zapinaniem/tarowaniem na serwer. – OderWat

+1

Seconding OderWat. Dla przykładu, wykonaj 'git init --bare foo/bar.git' po zalogowaniu do zdalnego (tj. [email protected]), wtedy "zdalny początek" będzie miał miejsce docelowe, do którego zostanie wprowadzone.Jeśli chodzi o przykład Githuba, myślę, że możesz użyć repozytorium Github/Add web interface, a następnie postępować zgodnie z poleceniem "Push an existing resentorium from the command line". Github zaleca opcję "-u", aby spowodować odwołanie do śledzenia. –

1

Możesz przekazać oddział do zdalnego serwera, na przykład github. byś najpierw trzeba zrobić wstępną konfigurację projektu, następnie sklonować swój projekt oraz:

git push <remote repo> <your branch> 
9

Istnieje wiele sposobów na przenoszenie repozytoriów, git bundle to dobry sposób na niedostateczną dostępność sieci. Ponieważ repozytorium Git jest po prostu katalogiem pełnym plików, możesz "sklonować" repozytorium, wykonując kopię katalogu .git w dowolny sposób, który najbardziej ci odpowiada.

Najbardziej efektywnym sposobem jest użycie zewnętrznego repozytorium (użyj GitHub lub skonfiguruj Gitosis), a następnie git push.

74

Co możesz zrobić, to po pierwsze, na lokalnym komputerze, zrobić gołymi klon repozytorium

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

Teraz archiwizowania się nowy katalog repo.git używając tar/gzip lub cokolwiek Twój ulubiony narzędzie do archiwizacji jest, a następnie skopiuj archiwum na serwer.

Anuluj archiwizację repo na swoim serwerze. Będziesz wtedy trzeba skonfigurować pilota na lokalnym repozytorium:

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

Wtedy będziesz w stanie wcisnąć się i wyciągnąć ze zdalnego repo z:

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

Czy mógłbyś wyjaśnić komentarz "nie zapomnij o .git!"? Gdzie jest sens dodawania .git do końca folderu? Kiedy powinienem to zrobić? Tylko konwencja? – lumbric

+5

".git" jest nieoficjalnym standardem służącym do identyfikacji nagłego repozytorium git –

+3

Nie podążam za tym pomysłem ... czy to nie jest celem założenia serwera git, a właściwie * użycia go * do " przenieść/skopiować/zachować rzeczy zsynchronizowane/backup "zamiast * zipping * i używając innej metody? – 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 
Powiązane problemy