Używam następującego polecenia, aby przekazać do mojej zdalnej gałęzi:
git push origin sandbox
Jeśli powiem
git push origin
czy to powoduje zmiany w moich innych oddziałach, czy też tylko aktualizuje mój obecny oddział? Mam trzy oddziały: master
, production
i sandbox
.
git push
Dokumentacja nie jest bardzo jasne, o tym, więc chciałbym wyjaśnić to na dobre.
Które gałęzie i piloty git push
dokładnie aktualizują poniższe polecenia?
git push
git push origin
origin
powyżej jest pilotem.
Rozumiem, że git push [remote] [branch]
popchnie tylko tę gałąź do pilota.
git
branch
git-branch
git-push
PlagueHammer
źródło
źródło
git push
, które może być interesująceOdpowiedzi:
Możesz kontrolować domyślne zachowanie, ustawiając push.default w swojej konfiguracji git. Z dokumentacji git-config (1) :
Definiuje akcję, którą powinien wykonać git push, jeśli w wierszu komend nie podano polecenia refspec, nie skonfigurowano żadnego refspec w zdalnym urządzeniu, a żadna z opcji refspec nie jest sugerowana przez żadną z opcji podanych w wierszu polecenia. Możliwe wartości to:
nothing
: niczego nie pchajmatching
: przesuń wszystkie pasujące gałęzieWszystkie gałęzie o tej samej nazwie na obu końcach są uważane za pasujące.
To był domyślny, ale nie od Git 2.0 (
simple
jest nowym domyślnym).upstream
: wypchnij bieżącą gałąź do jej gałęzi upstream (tracking
jest przestarzałym synonimem upstream)current
: wypchnij bieżącą gałąź do gałęzi o tej samej nazwiesimple
: (nowość w Git 1.7.11) jak upstream, ale odmawia pushowania, jeśli nazwa gałęzi upstream jest inna niż nazwa lokalnaJest to najbezpieczniejsza opcja i dobrze nadaje się dla początkujących.
Ten tryb stał się domyślny w Git 2.0.
Przykłady wiersza poleceń:
Aby wyświetlić bieżącą konfigurację:
Aby ustawić nową konfigurację:
źródło
simple
tryb. Ten tryb ma stać się domyślny w przyszłości.simple
działa jakupstream
, ale jakcurrent
wymaga, aby nazwy gałęzi były takie same na obu końcach.simple
zachowanie jest teraz domyślne.Możesz skonfigurować domyślne zachowanie swojego gita za pomocą push.default
lub jeśli masz wiele repozytoriów i chcesz mieć to samo dla wszystkich, wtedy
Prąd w tej konfiguracji oznacza, że domyślnie będzie naciskać tylko bieżące oddział kiedy zrobić git pchania
Inne opcje to:
AKTUALIZACJA - NOWY SPOSÓB TO ROBIĆ
Od wersji Git 1.7.11 wykonaj następujące czynności:
Jest to nowe ustawienie wprowadzone, które działa w taki sam sposób, jak bieżący, i będzie domyślnie ustawione na git z wersji 2.0 zgodnie z plotkami
źródło
git push origin
wypchnie wszystkie zmiany w lokalnych oddziałach, które mają pasujące oddziały zdalne worigin
Jak dlagit push
Z sekcji Przykłady na
git-push
stronie manźródło
Właśnie przekazałem swój kod do oddziału i przekazałem go do github, w następujący sposób:
źródło
Oto bardzo przydatna i pomocna informacja o Git Push : Git Push: Just the Tip
Najczęstszym zastosowaniem git push jest wypychanie lokalnych zmian do publicznego repozytorium. Zakładając, że serwer nadrzędny jest zdalnym o nazwie „origin” (domyślna nazwa zdalna, jeśli repozytorium jest klonem), a gałąź, która ma zostać zaktualizowana do / z, nosi nazwę „master” (domyślna nazwa gałęzi), odbywa się to za pomocą:
git push origin master
git push origin
przesunie zmiany ze wszystkich oddziałów lokalnych do pasujących oddziałów zdalnego źródła.git push origin master
przesunie zmiany z lokalnej gałęzi głównej do zdalnej gałęzi głównej.git push origin master:staging
przesyła zmiany z lokalnej gałęzi głównej do zdalnej gałęzi przemieszczania, jeśli taka istnieje.źródło
git push origin branch_name
z jakiegoś powodu wypychaj nie tylkobranch_name
oddział, ale także inne moje lokalne oddziały (git w wersji 1.9.1).git push origin master:staging
to niesamowity ukryty klejnot!(Marzec 2012)
Uwaga: ta domyślna „
matching
” zasada może się wkrótce zmienić(czasem po git1.7.10 +) :
Zobacz „ Omów: co powinien zrobić„ git push ”, jeśli nie mówisz, co naciskać? ”
http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694
źródło
Po prostu umieszczam to w mojej sekcji aliasów .gitconfig i uwielbiam jak to działa:
Popchnie bieżącą gałąź do początku
git pub
lub do innego repozytorium zgit pub repo-name
. Pyszne.źródło
git push -u --repo="origin" $1;
zamiast tego. Działa całkiem dobrze, z wyjątkiem sytuacji, gdy prześlesz do innego repozytorium, nazwa gałęzi będzie nazwą używaną przez inne repozytorium, a nie tą, z którejMożesz wcisnąć bieżącą gałąź za pomocą polecenia
(wziął stąd )
źródło
Git push spróbuje wypchnąć wszystkie lokalne gałęzie na zdalny serwer, prawdopodobnie tego nie chcesz. Mam kilka udogodnień, aby sobie z tym poradzić:
Alias „gpull” i „gpush” odpowiednio:
W moim ~ / .bash_profile
W związku z tym wykonanie polecenia „gpush” lub „gpull” popchnie tylko moją gałąź „obecnie na”.
źródło
Możesz zmienić to domyślne zachowanie w swoim
.gitconfig
, na przykład:Aby sprawdzić bieżące ustawienia, uruchom:
źródło
Zamiast używać aliasów, wolę tworzyć skrypty git-XXX, dzięki czemu mogę łatwiej kontrolować źródła (wszyscy nasi twórcy mają na swojej ścieżce katalog kontrolowany przez źródło dla tego typu rzeczy).
Ten skrypt (wywoływany
git-setpush
) ustawi wartość konfiguracji wartości naremote.origin.push
coś, co spowoduje tylko przesunięcie bieżącej gałęzi:Uwaga, ponieważ używamy
Gerrit
, ustawia cel narefs/for/XXX
aby przeszedł do gałęzi recenzji. Zakłada również, że pochodzenie to twoje zdalne imię.Wywołaj go po sprawdzeniu gałęzi za pomocą
Oczywiście można go również dostosować do robienia transakcji, ale lubię skrypty, które robią jedną rzecz i robią to dobrze
źródło
feature/fix_fubar
są skierowane do bardziej ogólnych gałęzi upstream, takich jakmaster
lubdevelop
, więc wskazywałoby to na niewłaściwy upstream. Jak wygląda Twój lokalny przepływ dla repozytoriów kontrolowanych przez Gerrit?git config remote.origin.push HEAD:refs/for/master
.Do mojego pliku .bashrc dodałem następujące funkcje, aby zautomatyzować te zadania. Robi git push / git pull + nazwa bieżącego oddziału.
źródło