Istnieje kilka sposobów ustawienia upstream, jednocześnie pchając lub bez pchania.
Jeśli magit-push-current-set-remote-if-missingnie jest nil(domyślne), zobaczysz coś takiego:
Push feature to
p pushRemote, after setting that
u @{upstream}, after setting that
e elsewhere
Aby przesłać origin/featurei ustawić jako upstream, naciśnij, ua następnie RETzaakceptuj domyślnego kandydata na zakończenie.
Jeśli magit-push-current-set-remote-if-missingtak nil, to zobaczysz to w zamian:
Push feature to
e elsewhere
Jeśli pteraz nacisnąłeś, powiedziano by Ci, że upstream nie jest skonfigurowany (co oznacza, że nie możesz pchać do upstream, jeśli nie ma upstream).
Ale jeśli magit-push-current-set-remote-if-missingtak nil, to lista przełączników byłaby dostępna --set-upstream, więc możesz używać P - u ptak, jak jesteś przyzwyczajony (z wyjątkiem tego, że drugie p jest małe). Jest jednak jedna komplikacja: po zmianie wartości magit-push-current-set-remote-if-missingmusisz zrestartować Emacsa, --set-upstreamaby pojawił się lub zniknął.
Wreszcie można ustawić za pomocą upstream „set powyżej (i nic innego zrobić)” polecenie: b uorigin/masterRET. Zauważ, że gdy zastosujesz to podejście, możesz wybrać tylko gałąź, która już istnieje.
Ale byłoby lepiej skonfigurować push-remote i push do tego. Aby dowiedzieć się więcej o push-remote i tym, jak różni się on od upstream, zobacz węzeł rozgałęzienia w podręczniku informacyjnym (wersja internetowa nie została jeszcze zaktualizowana).
Zasadniczo gałąź nadrzędna to gałąź, w którą twoja gałąź funkcji zostanie ostatecznie scalona (przez scalenie lub zmianę, a nie przez wypychanie) origin/master. A push-remote to miejsce, do którego przesuwasz swoje gałęzie funkcji, wciąż nad nimi pracując, lub aby ktoś inny mógł je scalić. Jeśli nazwa lokalnego oddziału to nazwa feature„push-remote” my-fork, wówczas naciśnięcie tego oddziału P pspowoduje wypchnięcie do my-fork/feature. („Push-to-branch” nie może być skonfigurowany, nazwa gałęzi na push-remote jest zawsze taka sama jak nazwa lokalna).
Tak więc, podczas gdy twoje pytanie brzmiało mniej więcej tak: „w jaki sposób mogę przepchnąć w górę, jednocześnie konfigurując w górę”, moim zaleceniem jest, aby w ogóle nie przepychać w górę, ale zamiast tego wcisnąć pilota.
Pod warunkiem, że nie zmieniłeś wartości magit-push-current-set-remote-if-missing, możesz skonfigurować push-remote za pomocą P psome-remoteRET. Ponieważ jednak prawdopodobnie wypychasz wszystkie gałęzie funkcji do tego samego pilota, lepiej jest ustawić push-remote raz dla wszystkich gałęzi i zrobić to z nim: ba potem, M-pdopóki nie zostanie wybrany odpowiedni pilot.
Zauważ również, że zwykle nie powinno być konieczne jawne ustawienie odgałęzienia. Kiedy tworzysz nową gałąź i wybierasz gałąź zdalną jako punkt początkowy, wówczas jest ona wykorzystywana jako nadrzędna.
Niestety punktem początkowym jest zazwyczaj lokalna gałąź i w takim przypadku Git domyślnie nie używa jej jako strumienia nadrzędnego. Ale można to łatwo naprawić, uruchamiając to raz:
git config --global branch.autoSetupMerge always
Wartość domyślna to true, co oznacza „ustaw punkt początkowy jako początkowy, pod warunkiem, że jest to gałąź zdalna ”.
Nawiasem mówiąc, to samo dotyczy pilota zdalnego sterowania. To również powinno być zazwyczaj ustawiane półautomatycznie w „nowych” repozytoriach. Jeśli sklonujesz repozytorium, zostaniesz zapytany, czy chcesz używać go originjako push-remote. Powinieneś odpowiedzieć „tak”, chyba że masz zamiar dodać innego pilota, powiedzmy my-fork, który powinien być używany jako push-remote. Gdy dodasz nowego pilota za pomocą M ai remote.pushDefaultnie jest on jeszcze ustawiony, zostaniesz zapytany, czy chcesz użyć nowo dodanego pilota jako pilota push.
Można to skonfigurować za pomocą magit-clone-set-remote.pushDefaulti magit-remote-add-set-remote.pushDefault.
Inną zaawansowaną opcją jest magit-branch-prefer-remote-upstreamdomyślna wartość nil. Jeśli ustawisz go t, a następnie wybierzesz gałąź lokalną jako punkt początkowy dla nowej gałęzi, wtedy punkt początkowy może być (zgodnie z niektórymi zasadami, patrz dokument-ciąg) zamiast sam punkt wyjścia.
<remote>/<branch>część została przypadkowo pominięta w wierszu polecenia (zobacz ten komentarz ). W międzyczasie możesz ustawićmagit-push-current-set-remote-if-missingzero.