Do tej pory wykonałem następujące kroki:
- Sklonowano zdalne repozytorium Git
- Rozgałęziono gałąź główną na eksperymentalną
- edytowany / testowany / zatwierdzony kod w gałęzi eksperymentalnej
Teraz nie jestem gotowy na połączenie eksperymentu z nadrzędnym. Chcę jednak przenieść go z powrotem do zdalnego repozytorium, ponieważ jest to repozytorium, które udostępniam kilku współpracownikom. Chciałbym, żeby zobaczyli, co zrobiłem w gałęzi eksperymentalnej. Zwykle uzyskuję dostęp do zdalnego repozytorium przez SSH.
Jak udostępnić lokalny oddział w zdalnym repozytorium bez wpływu na główną gałąź zdalnego repozytorium?
git
version-control
distributed
Coocoo4Cocoa
źródło
źródło
Odpowiedzi:
Według strony podręcznika git push :
Znajdź odniesienie, które pasuje
experimental
w repozytorium źródłowym (najprawdopodobniej znajdzierefs/heads/experimental
) i zaktualizuj tym samym ref (np.refs/heads/experimental
) W repozytorium pochodzenia.Gdyby
experimental
nie istniał zdalnie, zostałby stworzony .To jest to samo, co:
Utwórz gałąź
experimental
w repozytorium pochodzenia, kopiując bieżącąexperimental
gałąź.Ten formularz jest potrzebny tylko do utworzenia nowej gałęzi lub tagu w zdalnym repozytorium, gdy nazwa lokalna i nazwa zdalna są różne ; w przeciwnym razie nazwa ref będzie działać sama.
Lub, jak wspomniano we wskazówce git , możesz skonfigurować „Domyślny pilot oddziału”:
Jan sugeruje (dla git> = 1.7.0 ) do
push -u
(lubpush --set-upstream
opcja):W ten sposób nie musisz wykonywać żadnej konfiguracji git.
źródło
-u
opcji dla,push
aby upewnić się, że lokalny oddział śledzi zdalny oddział po jego upublicznieniu. Jeśli zapomnisz skorzystać z-u
opcji, możesz po prostu wpisaćgit push -u
później w gałęzi, a wtedygit pull
zadziała.git push origin experimental
, nie ma dowodów na to, że przesyłane są jakiekolwiek pakiety. Wygląda na to, że pilot ma już cały materiał z poprzedniego naciśnięcia; po prostu musi być podpięty do sędziów .git push origin experimental
wystarczy utworzyć gałąźexperimental
na pilocie.Jeśli nazwa twojego oddziału to
experimental
, a nazwa pilota toorigin
, to jestźródło
git push -u <remote-name> <branch-name>
nie działa, jeśli nowo utworzona gałąź nie jest spawnowana z tego samego repozytorium, tj. jeśli nie utworzyłeś nowej gałęzi przy użyciugit checkout -b new_branch
, to nie zadziała.Na przykład, sklonowałem lokalnie dwa różne repozytoria i musiałem skopiować repo2 / branch1 do repo1 /, a następnie też je wypchnąć.
Ten link pomógł mi przesłać mój lokalny oddział (sklonowany z innego repozytorium) do mojego zdalnego repozytorium:
źródło
Oto autorytatywna strona github do zdalnego zarządzania github http://github.com/guides/push-a-branch-to-github . Pomoże Ci odpowiedzieć na wszystkie Twoje pytania.
źródło
tl; dr
więcej informacji
po wykonaniu kilku zatwierdzeń w:
wypychasz swoją gałąź, określając upstream do jednego z repozytoriów pilotów, takich jak:
piloty można zobaczyć
zwykle będziesz mieć jednego domyślnego pilota
origin
. więc polecenie wyglądałoby następująco:a wszystkie następcze pchnięcia można wykonać tylko za pomocą
git push
.źródło