Najlepsza opcja
Prawdopodobnie najczystszym, najmniej zagmatwanym i najbezpieczniejszym sposobem umieszczenia w zdalnym repozytorium, które nie jest puste, jest wysłanie do dedykowanych gałęzi w pilocie, które reprezentują gałęzie twojego laptopa.
Spójrzmy na najprostszy przypadek i załóżmy, że masz tylko jedną gałąź w każdym repozytorium: master. Kiedy pchasz do zdalnego repozytorium z laptopa, zamiast pchać master -> master, push master -> laptop-master (lub podobną nazwę). W ten sposób wypychanie nie wpływa na aktualnie wyewidencjonowaną gałąź główną w zdalnym repozytorium. Aby to zrobić z laptopa, polecenie jest dość proste:
git push origin master:laptop-master
Oznacza to, że lokalna gałąź główna zostanie przeniesiona do gałęzi o nazwie „laptop-master” w zdalnym repozytorium. W swoim zdalnym repozytorium będziesz mieć nową gałąź o nazwie „laptop-master”, którą możesz następnie połączyć ze zdalnym serwerem głównym, gdy będziesz gotowy.
Alternatywna opcja
Możliwe jest również po prostu push master -> master, ale wypychanie do aktualnie wyewidencjonowanej gałęzi nie-bare repo nie jest generalnie zalecane, ponieważ może być mylące, jeśli nie rozumiesz, co się dzieje. Dzieje się tak, ponieważ wypchnięcie do wyewidencjonowanej gałęzi nie aktualizuje drzewa roboczego, więc sprawdzenie git status
wyewidencjonowanej gałęzi, do której została wypchnięta, pokaże dokładnie przeciwne różnice, niż to, co zostało wysłane ostatnio. Byłoby to szczególnie mylące, gdyby drzewo robocze było brudne przed wykonaniem wypychania, co jest głównym powodem, dla którego nie jest to zalecane.
Jeśli chcesz spróbować po prostu wcisnąć master -> master, to polecenie jest po prostu:
git push origin
Ale kiedy wrócisz do zdalnego repozytorium, najprawdopodobniej będziesz chciał git reset --hard HEAD
zsynchronizować drzewo robocze z przekazaną zawartością. Może to być niebezpieczne , ponieważ jeśli w drzewie pracy zdalnej są jakieś niezatwierdzone zmiany, które chcesz zachować, zostaną one wymazane. Upewnij się, że wiesz, jakie są tego konsekwencje, zanim spróbujesz, lub przynajmniej najpierw wykonaj kopię zapasową!
EDYCJA Od wersji Git 2.3 możesz użyć funkcji „push-to-deploy” git push: https://github.com/blog/1957-git-2-3-has-been-released . Ale wypychanie do oddzielnej gałęzi, a następnie scalanie jest zwykle lepsze, ponieważ wykonuje faktyczne scalanie (dlatego działa z niezatwierdzonymi zmianami, tak jak robi to merge).