Dzwoniąc za magit-push-currentpomocą P Pz bufora statusu, Magit 2.1.0pyta 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-currentpomocą P Pz bufora statusu, Magit 2.1.0pyta 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-upstreamprzełą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 pushbez żadnych argumentów. To, co by to zrobiło, zależałoby wyłącznie od konfiguracji Git.
masteri nie ustawiłem w górę, czy może powinienem rozgałęzić się, origin/masteraby automatycznie ustawić w górę?
origin/masterzestawu origin/masterjako upstream, ale spodziewałbym się, że będę mieć origin/branch-nameupstream.
P -p P <... completion ...> RETPamiętaj, że origin/branch-namejest 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-upstreamgdy 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 ca następnie edytuję .git/configplik, aby wskazywał, origin/branchzamiast 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-toi, jak wiesz, Git nie może ustawić nieistniejącej gałęzi jako nadrzędnej, więc Magit też nie może.
some-branch-namenaoriginpilota, prawdopodobnie możesz po prostu wpisać,o TAB s TABa otrzymasz nazwę, którą chcesz.