Dzwoniąc za magit-push-current
pomocą P P
z bufora statusu, Magit 2.1.0
pyta mnie, gdzie po raz pierwszy wcisnąć gałąź, gdy nie jest ustawiony upstream.
Jak może automatycznie generować nazwę, tak jak kiedyś?
Dzwoniąc za magit-push-current
pomocą P P
z bufora statusu, Magit 2.1.0
pyta mnie, gdzie po raz pierwszy wcisnąć gałąź, gdy nie jest ustawiony upstream.
Jak może automatycznie generować nazwę, tak jak kiedyś?
Odpowiedzi:
Aktualizacja: Wspomniana poniżej „gałąź wypychania” została już wdrożona. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją dotyczącą rozgałęzień .
Musisz raz ustawić gałąź nadrzędną. Gdy to zrobisz, P Pnaciskasz na to, a otrzymasz listę niepustanych i nieprzypisanych zmian w buforze stanu (pod warunkiem, że są).
Istnieją różne sposoby ustawienia gałęzi upstream. Można użyć --set-upstream
przełącznika z popup Push: P -u P. Lub użyj polecenia określający górną i robi nic innego: b u.
Również Magit automatycznie ustawia teraz gałąź odgórną podczas tworzenia nowej gałęzi, pod warunkiem, że „punktem początkowym” jest nazwa gałęzi. Działa to dla lokalnych i zdalnych „upstreams”. Pamiętaj jednak, że jeśli wybierzesz lokalny oddział jako punkt początkowy, nie pomoże ci to w przepychaniu. Przenoszenie z bieżącego repozytorium do bieżącego repozytorium oczywiście nie ma sensu i jest niedozwolone.
Kiedy więc gałąź „nadrzędna” jest w rzeczywistości inną gałęzią lokalną, P Pzachowuje się tak, jakby żadna gałąź nadrzędna nie została skonfigurowana i zachowuje się dokładnie tak samo P e. To samo dotyczy sytuacji, gdy w ogóle nie jest skonfigurowany żaden serwer.
Wynika to z ograniczenia w Git: można powiązać tylko jedną gałąź z inną gałęzią, a gałąź ta jest następnie nazywana „gałęzią nadrzędną”. Byłoby lepiej, gdyby istniał przynajmniej oddział „upstream” i „publishing”. W końcu zamierzam to zaimplementować w Magit. Zobacz numer 1485 .
Więc jeśli chcesz mieć możliwość pushowania, P Pwtedy gałąź „upstream” musi być np. „Origin / master”, a nie „master”.
Rozważam dodanie wariantu push, który zawsze działa git push
bez żadnych argumentów. To, co by to zrobiło, zależałoby wyłącznie od konfiguracji Git.
master
i nie ustawiłem w górę, czy może powinienem rozgałęzić się, origin/master
aby automatycznie ustawić w górę?
origin/master
zestawu origin/master
jako upstream, ale spodziewałbym się, że będę mieć origin/branch-name
upstream.
P -p P <... completion ...> RET
Pamiętaj, że origin/branch-name
jest oferowany jako kandydat do ukończenia, więc nie musisz go wpisywać.
Korzystam z następujących porad, które automatycznie włączają się, --set-upstream
gdy bieżący oddział nie ma jeszcze upstream:
(defun magit-push-arguments-maybe-upstream (magit-push-popup-fun &rest args)
"Enable --set-upstream switch if there isn't a current upstream."
(let ((magit-push-arguments
(if (magit-get-remote) magit-push-arguments
(cons "--set-upstream" magit-push-arguments))))
(apply magit-push-popup-fun args)))
(advice-add 'magit-push-popup :around #'magit-push-arguments-maybe-upstream)
W połączeniu z zakończeniem ido pozwala to na przesunięcie nowej gałęzi dzięki P P RET:
;; NOTE: requires ido-completing-read+
(setq magit-completing-read-function #'magit-ido-completing-read)
Po prostu tworzę nową gałąź z, b c
a następnie edytuję .git/config
plik, aby wskazywał, origin/branch
zamiast małpować wszystkie magit 2 rzeczy, co i tak wydaje się nie działać.
Zmiana:
[branch "fix_something"]
remote = .
merge = refs/heads/master
Do
[branch "fix_something"]
remote = origin
merge = refs/heads/fix_something
To działa, podczas gdy wciąż nie znalazłem kombinacji klawiszy w Magit2, która spełnia tę samą funkcję. Próba ustawienia pilota nie działa, ponieważ nie istnieje on jeszcze na początku.
bu
. Ale to wykorzystuje git branch --set-upstream-to
i, jak wiesz, Git nie może ustawić nieistniejącej gałęzi jako nadrzędnej, więc Magit też nie może.
some-branch-name
naorigin
pilota, prawdopodobnie możesz po prostu wpisać,o TAB s TAB
a otrzymasz nazwę, którą chcesz.