Kiedy wypychasz gałąź za pomocą Magit (za pomocą P P
), a gałąź nie ma wcześniejszego biegu, Magit pyta cię o nazwę gałęzi, do której chcesz pchać. To wspaniale.
Jednak po ustawieniu upstream dla gałęzi Magit nie pyta cię już, gdzie chcesz go przepchnąć. Jest to zwykle wygodne (nie chcesz za każdym razem pytać), ale utrudnia przesunięcie gałęzi do innej zdalnej gałęzi.
Czy istnieje sposób, aby Magit zapytał mnie ponownie o gałąź docelową, nawet jeśli bieżąca gałąź ma już górną granicę?
Przypadek użycia
Dość często mam taką gałąź:
Local: issue-30 ~/Git-Projects/repo/
Remote: issue-30 @ origin ([email protected]:.../repo.git)
Head: ebe4054 Some commit message
i chcę zmienić oddziały lokalne i zdalne na issue-30-and-34
. Jeśli tylko zmienię nazwę oddziału lokalnego, pozostanie mi to:
Local: issue-30-and-34 ~/Git-Projects/repo/
Remote: issue-30 @ origin ([email protected]:.../repo.git)
Head: ebe4054 Some commit message
Nawet jeśli usunę origin/issue-30
, wykonanie P P
po issue-30-and-34
prostu odtworzy plik origin/issue-30
.
Skończyło się na tym, że wydaje mi się, że jest to rondo, które można wykonać za pomocą jednego git
polecenia:
- Utwórz nowy oddział o nazwie
issue-30-and-34
(zamiast zmiany nazwy starego), - usuń wersje lokalne i zdalne
issue-30
, - push
issue-30-and-34
(ponieważ nie ma jeszcze upstream, Magit zapyta mnie, gdzie pushować).
Odpowiedzi:
Zaczynając od
v2.1
, możesz zmienić poprzednią gałąź na zdalną lub lokalną gałąź za pomocą bu[REMOTE/]BRANCH
RET. Zaczynając odv2.4
, jeśli upstream jest już ustawiony, to bupo prostu go rozbroi. Naciśnij uponownie, aby ustawić nową wartość.Zaczynając od
v2.4
i jeśli upstream jest rozbrojony, możesz również ustawić upstream podczas pchania za pomocą pu[REMOTE/]BRANCH
RET. Zostaniesz automatycznie zapytany, jakiej gałęzi użyć jako nadrzędnej. Po ustawieniu upstream pupopchnie do tego, nie pozwalając ci zmienić upstream. Tak więc, aby zmienić upstream, musisz zastosować podejście opisane w poprzednim akapicie.Wcześniej
v2.4
można było również ustawić gałąź zdalną, do której wypychasz, jako gałąź nadrzędną p-ueREMOTE/BRANCH
RET. Ale teraz--set-upstream
przełącznik nie jest już domyślnie dostępny w okienku push . Możesz go odzyskać, ustawiającmagit-push-current-set-remote-if-missing
zero. Ma to dwa efekty:--set-upstream
przełącznik będzie ponownie dostępny po następnym restarcie, a podejście opisane w poprzednim akapicie przestanie działać.Jeśli chcesz, aby obie funkcje opisane w drugim i trzecim akapicie były dostępne jednocześnie, pozostaw to
magit-push-current-set-remote-if-missing
nietknięte i dodaj to do pliku inicjującego:źródło
Naciśnij „
P C-u C-u P
”, aby Magit zapytał cię, jakiej zdalnej i zdalnej gałęzi użyć przed wypchnięciem.(Za pomocą argumentu z pojedynczym prefiksem („
P C-u P
”) Magit pyta, którego pilota należy użyć.)Znalazłem to, naciskając
P C-h k P
w buforze stanu Magit, czytając dokumentymagit-push
imagit-push-dwim
(te dokumenty wydają się nieaktualne, BTW) i eksperymentując.PS: Używam Magit
magit-1.2.0-2049-ge6839e8
.źródło
Wygląda na to, że znajduje się teraz w sekcji gałąź / konfiguracja:
b
C
p
ustawić pushRemoteźródło
Od listopada 2016 r. I najnowsze
magit
, oto częściowe rozwiązanie:P
e
- pozwala naciskaćelsewhere
, ale nie jest to zapamiętywaneNie mogłem znaleźć sposobu na magit
--set-upstream
, więc zrobiłem to z terminalu, rodzaj oszustwa, ale udało mi się rozwiązać ten problem:git push --set-upstream origin <branch-name>
A teraz nowy upstream został zapisany i mogę zbudować swoją następną rzecz :)
źródło
--set-upstream
” - Być może powinieneś spróbować przeczytać odpowiedźmagit
trochę się zmieniło od tamtej pory i mam nadzieję, że moje rozwiązanie zaoszczędzi komuś dodatkowe kilka minut