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ć.

 210
Author: Rafael Mueller, 2009-05-04

4 answers

Tak, po prostu wykonaj następujące czynności

git checkout feature_x
git push origin feature_x
 335
Author: cpjolicoeur,
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żyj upstream.
  • 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 jak upstream 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 jako current. Jest to najbezpieczniejsza opcja i nadaje się dla początkujących. Ten tryb stał się domyślnym w Git 2.0.
 62
Author: Karthik Bose,
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
 5
Author: Bhaskar,
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.

 -2
Author: CodeKid,
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