Pracuję na lokalnym repozytorium git. Istnieją dwie gałęzie master
i feature_x
.
Chcę przekazać feature_x
do zdalnego repozytorium, ale nie chcę przesyłać zmian w master
gałęzi.
Czy git push origin feature_x
mój feature_x
oddział ( feature_x
oddział już istnieje na odległość) będzie działał?
Nie chcę tego testować na moim pudełku, ponieważ nie mogę teraz naciskać na opanowanie.
Odpowiedzi:
tak, po prostu wykonaj następujące czynności
źródło
git push -u origin <branch-name>
. Jednak nie wspomniałeś o tym. Czy to konieczne ?-u
opcjagit-push
polecenia spowoduje ustawienie referencji w górę dla śledzenia gałęzi, która właśnie została wypchnięta. Dzięki temu rzeczy takie jakgit-pull
ta gałąź w przyszłości będą już wiedziały, z której gałęzi pobrać, nie określając jej. Nie jest wymagana jako opcja wypychania pojedynczej gałęzi, ale jest szeroko stosowana, ponieważ wiele osób chce, aby lokalna gałąź śledziła zdalną gałąź, którą wypychają.Domyślnie
git push
aktualizuje wszystkie zdalne gałęzie. Ale możesz skonfigurować git, aby aktualizował tylko bieżącą gałąź do jej źródła.Oznacza to, że git zaktualizuje tylko bieżącą (wypisaną) gałąź, gdy wykonujesz polecenie git push.
Inne ważne opcje to:
nothing
: Nie wypychaj niczego (błąd), chyba że podano wyraźnie refspec . Jest to przede wszystkim przeznaczone dla osób, które chcą uniknąć błędów, zawsze wyrażając się jasno.matching
: Wciśnij wszystkie gałęzie o tej samej nazwie na obu końcach. (opcja domyślna przed wersją 1.7.11)upstream
: Wciśnij bieżącą gałąź do jej górnej gałęzi. Ten tryb ma sens tylko wtedy, gdy przepychasz się do tego samego repozytorium, z którego normalnie korzystasz (tj. Centralny przepływ pracy ). Nie trzeba mieć tej samej nazwy dla oddziału lokalnego i zdalnego.tracking
: Przestarzałe, użyjupstream
zamiast tego.current
: Wciśnij bieżącą gałąź do zdalnej gałęzi o tej samej nazwie na końcu odbierającym. Działa zarówno w centralnym, jak i niecentralnym przepływie pracy.simple
: [dostępny od wersji 1.7.11] w scentralizowanym przepływie pracy, pracuj jakupstream
z dodatkowym bezpieczeństwem, aby odmówić wypchnięcia, jeśli nazwa gałęzi upstream jest inna niż nazwa lokalna. Podczas pchania do pilota innego niż pilot, z którego zwykle wyciągasz, działaj jakcurrent
. Jest to najbezpieczniejsza opcja i nadaje się dla początkujących. Ten tryb stał się domyślny w Git 2.0.źródło
current
to było to, czego szukałem, domyślniegit push
wfoo
oddziale popchnie go doorigin/foo
gałęzi.current
ma to większy sens jako domyślny.simple
Domyślnie uważam, że ma to większy sens. Zaktualizowałem odpowiedź słowem „kiedy użyć czego”. Proszę spojrzeć.simple
.Drobna aktualizacja oprócz odpowiedzi Karthika Bose'a - możesz skonfigurować git globalnie, aby wpływać na wszystkie obszary robocze, aby zachowywały się w ten sposób:
źródło
Powiedzmy, że masz lokalną gałąź foo, zdalne źródło origin i zdalne źródło / master gałęzi.
Aby przesłać zawartość foo do origin / master, musisz najpierw ustawić jej pobieranie:
Następnie możesz przepchnąć tę gałąź, używając:
W ostatnim poleceniu możesz dodać --force, aby zastąpić całą historię pochodzenia / master historią foo.
źródło