Istnieje kilka sposobów ustawienia upstream, jednocześnie pchając lub bez pchania.
Jeśli magit-push-current-set-remote-if-missing
nie 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/feature
i ustawić jako upstream, naciśnij, ua następnie RETzaakceptuj domyślnego kandydata na zakończenie.
Jeśli magit-push-current-set-remote-if-missing
tak 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-missing
tak 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-missing
musisz zrestartować Emacsa, --set-upstream
aby pojawił się lub zniknął.
Wreszcie można ustawić za pomocą upstream „set powyżej (i nic innego zrobić)” polecenie: b uorigin/master
RET. 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-remote
RET. 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 origin
jako 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.pushDefault
nie 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.pushDefault
i magit-remote-add-set-remote.pushDefault
.
Inną zaawansowaną opcją jest magit-branch-prefer-remote-upstream
domyś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-missing
zero.