Na bezpiecznym serwerze tworzysz puste zdalne repozytorium (w sumie może być na produkcji)
(przykład)
sciezka_do_katalogu/repo_zdalne # git init --bare
Wchodzisz do katalogu, w którym będziesz robił modyfikacje i dodajesz cały kod do repozytorium zdalnego
(przykład)
katalog_modyfikacji # git init
katalog_modyfikacji # git remote add production_upstream ssh://user@host:1234/srv/git/sciezka_do_katalogu/repo_zdalne
katalog_modyfikacji # git add .
katalog_modyfikacji # git ci -m 'production init commit'
katalog_modyfikacji # git push --set-upstream production_upstream master
Kod strony produkcyjnej jest na repo zdalnym i jest wersjonowany (na tym etapie możesz wycofywać zmiany, chociaż nie polecam pracować na produkcji).
Sugeruję teraz zrobić git clone gdzieś na serwerze developerskim i na nim robić modyfikacje (clon robisz raz i kopiujesz kod strony produkcyjnej)
(wymaga odwzorowania produkcji na potrzeby modyfikacji, czyli katalog "dev_zmiany" powinien być wskazany w apachu jako webroot, do tego baza danych itd.)
(przykład)
git clone ssh://user@host:1234/srv/git/sciezka_do_katalogu/repo_zdalne dev_zmiany
Następnie tworzysz branche na zmiany, na developerce, commitujesz swoje działające zmiany.
Jak skończysz scalasz mastera z tym branchem, gdy zmiany są pewne, pushujesz całość na repo zdalne.
Na produkcji robisz git pull i tym samym zmiany są na stronce (awaryjnie wycofujesz zmiany git reset --hard <working_commit_hash>).
W takim modelu pracy nie pracujesz na produkcji, tylko bezpiecznie na developerce, a jak juz zmiany są stabilne wtedy trafiają na produkcję.
[Adam W.]