Git - omijamy firewall
Gdy firewall stanie na drodze i trzeba commita dowieźć na serwer cięzarówką
Created Oct 2, 2022 - Last updated: Oct 2, 2022
Założenia:
- korzystam z Git w linii poleceń
- pomiędzy dotychczas używanym serwerem a zdalną maszyną organizacja (pozdrawiam serdecznie CI PW) bez ostrzeżenia zmieniła ustawienia firewalla blokując wszystko
- z sieci lokalnej organizacji da się zcommitować więc wystarczy zabrać repo fizycznie
- komputer stacjonarny, nie da się go zawieźć
- laptop do przeniesienia danych i commitu
- z laptopa na stacjonarny można ssh
Synchronizacja stacjonarny -> laptop
Na laptopie ustawiam nowego remote
cd projekt
git remote add stacjonarny ssh://l@192.168.666.666/home/user/projekt
git pull stacjonarny main*
* “main” albo “master” jeśli nie zmieniono
Synchronizacja laptop -> stacjonarny
Na laptopie też były zmiany a bez dostępnego centralnego serwera nie znajdą się one na stacjonarnym.
To nie zadziała:
git push stacjonarny main*
Domyślnie jest ostrzeżenie ponieważ repo na zdalnym-stacjonarnym nie będzie “wiedziało” o nowych zmianach.
Na stacjonarnym trzeba pozwolić na takie pushe ale warning lepiej zostawić:
git config --local receive.denyCurrentBranch warn
Teraz na laptopie da się zrobić push. Jednak na stacjonarnym (teraz to remote) trzeba zresetować HEAD.
git reset --hard
Trzeba przy tym pamiętać, że niescommitowane zmiany można przy tym stracić. Trzeba zwrócić uwagę, czy czegoś nie należy “restore”.
Weryfikacja
Teraz na obu maszynach powinno być to samo. Sprawdzamy logi.
git log --color --decorate=full --pretty=fuller --stat --graph
Można jeszcze obejrzeć reflog:
git reflog
Transport za firewalla
Fizyczny transport pendrive/dysku/laptopa do wnętrza organizacji, za firewalla i push.
git push