Jak mogę wypchnąć repozytorium Git do folderu przez SSH?


53

Mam folder o nazwie mój projekt, w którym zrobiłem git init , git commit -a itp.

Teraz chcę wypchnąć go do pustego folderu w / mnt / foo / bar na zdalnym serwerze.

Jak mogę to zrobić?

Próbowałem na podstawie tego, co przeczytałem:

cd my-project
git remote add origin ssh://user@host/mnt/foo/bar/my-project.git
git push origin master

co nie wydawało się właściwe (zakładam, że źródło pojawi się przed miejscem docelowym) i nie udało się:

fatal: '/mnt/boxee/git/midwinter-physiotherapy.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Chciałbym, aby działało tak, że nie muszę uzyskiwać dostępu do zdalnego hosta i ręcznie inicjować repozytorium Git za każdym razem ... czy muszę to robić? Czy w ogóle wybieram właściwą drogę?

Dzięki.

Odpowiedzi:


56

Polecenie jest poprawne; jednak adres zdalny musi również wskazywać na zainicjowane repozytorium Git. Jest to jednak praca jednorazowa.

ssh user@host "git init --bare /mnt/foo/bar/my-project.git"

(W Git „puste” repozytorium to takie, w którym nie ma działającego drzewa).


11

Jeśli chcesz zarówno przekazać do repozytorium, jak i zaktualizować pliki na serwerze , możesz utworzyć haczyk git po stronie serwera , aby pobrać pliki po ich wypchnięciu. W katalogu git po stronie serwera/hooks/ utwórz plik o nazwie post-receivei dodaj następujący kod (aktualizując katalogi, aby pasowały do ​​struktury folderów):

#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f

Następnie nadaj plikowi odpowiednie uprawnienia za pomocą chmod +x post-receive

Więcej informacji i szczegółowe wyjaśnienie tutaj: https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps


2

Jeśli nie chcesz ręcznie tworzyć repozytorium na serwerze, możesz zainstalować gitosis , co zautomatyzuje proces. Ale musisz utworzyć proces na serwerze, aby utworzyć repozytorium - nie możesz tego zrobić przez połączenie git ssh z klientem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.