Як не дати Магіту запитати, куди просунути гілку?


10

Під час дзвінка magit-push-currentз P Pбуфера стану Magit 2.1.0запитує мене, куди вперше натиснути гілку, коли не встановлено верхній потік.

Як він може дозволити автоматично генерувати ім'я, як раніше?


2
Якщо ви не знаєте, ім'я, створене автоматично, є одним із варіантів завершення. Отже, перший раз, коли ви натиснете some-branch-nameна originпульт, ви, ймовірно, можете просто набрати, o TAB s TABі ви отримаєте потрібне ім’я.
Малабарба

Ой добре, я не знав, дякую. Проблема полягає в тому, що у мене дуже багато гілок, починаючи з тих самих префіксів, що не дуже зручно, також я завжди ставлю віддалені гілки з такою ж назвою, що і місцеві гілки.
z1naOK9nu8iY5A

Відповіді:


8

Оновлення: "Відгалужувальна гілка", згадана нижче, вже реалізована. Додаткову інформацію див. У документації про розгалуження .

Ви повинні встановити гілку вище за течією один раз. Щойно ви зробите це, що 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щоб автоматично встановити верхній потік?
z1naOK9nu8iY5A

Дивіться оновлену відповідь.
Тарсій

1
Відгалуження від origin/masterнабору origin/masterяк вище, але я б очікував, що воно буде таким, origin/branch-nameяк вище.
z1naOK9nu8iY5A

Якщо це те, що ви хочете, тоді краще це робити під час натискання. P -p P <... completion ...> RETЗверніть увагу, що origin/branch-nameпропонується як кандидат на завершення, тому не потрібно вводити його.
Тарсій

2
Це боляче, коли ви використовуєте gitflow та витягуєте запити на перегляд коду, із гілкою на кожну функцію, тому що ви, як правило, коли-небудь натискаєте один раз, і це завжди, щоб створити віддалену гілку з тією ж назвою, що і локальна гілка. Перехід до іншої названої гілки буде завершенням перегляду коду.
Баррі Келлі

3

Я використовую таку пораду, яка автоматично вмикається, --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)

Це так круто! Дуже дякую!
z1naOK9nu8iY5A

0

Я просто створюю нову гілку, 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, яка б виконувала те саме. Спроба встановити пульт не працює, оскільки він ще не існує за початковим кодом.


1
Верхній потік можна встановити за допомогою bu. Але це використовує, git branch --set-upstream-toі як ви знаєте, Git не може встановити неіснуючу гілку як верхню течію, і тому Magit також не може.
Тарсій

@tarsius magit 1, здавалося, робив те, що мені потрібно. Я просто намагаюся повернути деякий вигляд цього робочого процесу.
Девід Н. Уелтон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.