Jak wcisnąć tylko jedną gałąź Git (i żadnych innych gałęzi)?
Pracuję nad lokalnym repozytorium git. Istnieją dwie gałęzie, master
i feature_x
.
Chcę wcisnąć feature_x
do zdalnego repo, ale nie chcę wciskać zmian w gałęzi master
.
Czy git push origin feature_x
z mojego feature_x
branch (feature_x
branch już istnieje na zdalnym) zadziała?
Nie chcę tego testować na moim pudełku, ponieważ nie mogę teraz naciskać, aby opanować.
4 answers
Tak, po prostu wykonaj następujące czynności
git checkout feature_x
git push origin feature_x
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-04 13:57:28
Domyślnie git push
aktualizuje wszystkie zdalne gałęzie. Ale możesz skonfigurować git tak, aby aktualizował tylko bieżącą gałąź do jej źródła.
git config push.default upstream
Oznacza to, że git zaktualizuje tylko bieżącą (sprawdzoną) gałąź, gdy wykonasz git push.
Inne ważne opcje to:
-
nothing
: nie wypychaj niczego (błąd), chyba że jawnie podano refspec . Jest to przede wszystkim przeznaczone dla osób, które chcą uniknąć błędów, zawsze będąc wyraźnym. -
matching
: Wypchnij wszystkie gałęzie o tej samej nazwie na obu końcach. (opcja domyślna przed wersją 1.7.11) -
upstream
: przesuń bieżącą gałąź do jej źródła branch. Ten tryb ma sens tylko wtedy, gdy przechodzisz do tego samego repozytorium, z którego normalnie pobierasz (np. centralny obieg pracy ). nie ma potrzeby posiadania tej samej nazwy dla gałęzi lokalnej i zdalnej. -
tracking
: przestarzałe, zamiast tego użyjupstream
. -
current
: Przesuń bieżącą gałąź do zdalnej gałęzi z tej samej nazwy na końcu odbiorczym. Działa zarówno w centralnych, jak i niecentrycznych przepływach pracy. -
simple
: [dostępne od wersji 1.7.11] w scentralizowanym przepływie pracy, działa jakupstream
z dodatkowym zabezpieczeniem, aby odmówić push, jeśli nazwa gałęzi upstream różni się od lokalnej. Podczas naciskania na pilota, który różni się od pilota, z którego zwykle wyciągasz, pracuj jakocurrent
. Jest to najbezpieczniejsza opcja i nadaje się dla początkujących. Ten tryb stał się domyślnym w Git 2.0.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-16 06:52:18
Minor update on top of Karthik Bose ' s answer - możesz skonfigurować git globalnie, tak aby wpływał na wszystkie Twoje przestrzenie robocze, aby zachowywać się w ten sposób:
git config --global push.default upstream
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:56
Załóżmy więc, że masz lokalną gałąź foo, zdalną o nazwie origin i zdalną gałąź origin/master.
Aby wypchnąć zawartość foo do origin / master, musisz najpierw ustawić jej upstream:
git checkout foo
git branch -u origin/master
Następnie możesz wcisnąć do tej gałęzi używając:
git push origin HEAD:master
W ostatnim poleceniu możesz dodać --force, aby zastąpić całą historię origin/master historią foo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-07 00:14:53