Під час дзвінка magit-push-current
з P P
буфера стану Magit 2.1.0
запитує мене, куди вперше натиснути гілку, коли не встановлено верхній потік.
Як він може дозволити автоматично генерувати ім'я, як раніше?
Під час дзвінка magit-push-current
з P P
буфера стану Magit 2.1.0
запитує мене, куди вперше натиснути гілку, коли не встановлено верхній потік.
Як він може дозволити автоматично генерувати ім'я, як раніше?
Відповіді:
Оновлення: "Відгалужувальна гілка", згадана нижче, вже реалізована. Додаткову інформацію див. У документації про розгалуження .
Ви повинні встановити гілку вище за течією один раз. Щойно ви зробите це, що P Pпідштовхне до цього, і ви отримаєте списки незробитих і непустових змін у буфері статусу (за умови, що такі є).
Існують різні способи встановлення гілки вище за течією. Ви можете використовувати --set-upstream
перемикач з штовхає спливаючого вікна: P -u P. Або використовуйте команду , яка встановлює вгору по течії і нічого не робить: b u.
Також Magit тепер автоматично встановлює гілку вгору за потоком під час створення нової гілки, за умови, що "початковою точкою" є назва гілки. Це працює для локальних та віддалених "вхідних потоків". Але зауважте, що якщо ви виберете місцеву гілку як початкову точку, це не допоможе вам просуватися. Переміщення з поточного сховища до поточного сховища очевидно не має сенсу і заборонено.
Отже, коли гілка "вище за течією" насправді є іншою локальною гілкою, тоді вона P Pведе себе так, ніби жодна гілка вище за течією не була налаштована, і веде себе точно так само P e. Те саме відбувається, якщо взагалі не налаштовано верхній потік.
Це пов'язано з обмеженням у Git: можна лише асоціювати одну іншу гілку з якоюсь гілкою, а потім ця гілка називається "гілкою вище". Було б краще, якби були хоча б відділення "вище за течією" та "опублікувати". Я маю намір в кінцевому підсумку реалізувати це в Магіті. Див. Випуск № 1485 .
Тож якщо ви хочете мати можливість натиснути саме P Pтоді, гілка "вище за течією" повинна бути, наприклад, "початком / господарем", а не "господарем".
Я розглядаю можливість додавання варіанту push, який завжди працює git push
без будь-яких аргументів. То, що це робити, буде залежати виключно від конфігурації Git.
master
і він не налаштовувався вгору за течією, чи варто мені відгалужуватись, origin/master
щоб автоматично встановити верхній потік?
origin/master
набору origin/master
як вище, але я б очікував, що воно буде таким, origin/branch-name
як вище.
P -p P <... completion ...> RET
Зверніть увагу, що origin/branch-name
пропонується як кандидат на завершення, тому не потрібно вводити його.
Я використовую таку пораду, яка автоматично вмикається, --set-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)
У поєднанні з ido завершенням це дозволяє пересувати нову гілку з P P RET:
;; NOTE: requires ido-completing-read+
(setq magit-completing-read-function #'magit-ido-completing-read)
Я просто створюю нову гілку, b c
а потім редагую .git/config
файл, щоб вказувати на origin/branch
замість того, щоб маніпувати всіма матеріалами magit 2, які, схоже, не працюють.
Змінити:
[branch "fix_something"]
remote = .
merge = refs/heads/master
До
[branch "fix_something"]
remote = origin
merge = refs/heads/fix_something
Це працює, тоді як я досі не знайшов ключової комбінації в magit2, яка б виконувала те саме. Спроба встановити пульт не працює, оскільки він ще не існує за початковим кодом.
bu
. Але це використовує, git branch --set-upstream-to
і як ви знаєте, Git не може встановити неіснуючу гілку як верхню течію, і тому Magit також не може.
some-branch-name
наorigin
пульт, ви, ймовірно, можете просто набрати,o TAB s TAB
і ви отримаєте потрібне ім’я.