Змініть гілку гілки за допомогою Magit


47

Коли ви натискаєте гілку за допомогою Magit (з P P), а гілка не має верхнього течії, Magit запитує вас, як називається гілка, на яку ви хочете натиснути. Це чудово.

Однак, як тільки ви встановите верхівку для гілки, Magit більше не запитує вас, куди ви хочете її натиснути. Зазвичай це зручно (ви не хочете, щоб вас просили кожен раз), але це ускладнює натискання гілки на іншу віддалену гілку.

Чи є спосіб змусити Magit запитати мене ще раз про гілку призначення, навіть якщо в поточній гілці вже є висхідний потік?


Корпус-кейс

Досить часто зустрічається така галузь:

Local:    issue-30 ~/Git-Projects/repo/
Remote:   issue-30 @ origin (git@github.com:.../repo.git)
Head:     ebe4054 Some commit message

і я хочу змінити і локальну, і віддалену гілки на issue-30-and-34. Якщо я просто перейменую локальну гілку, мені залишається таке:

Local:    issue-30-and-34 ~/Git-Projects/repo/
Remote:   issue-30 @ origin (git@github.com:.../repo.git)
Head:     ebe4054 Some commit message

Навіть якщо я видаляю origin/issue-30, виконайте P Pдалі issue-30-and-34 просто відтворять origin/issue-30.

Що я в кінцевому підсумку роблю, це наступне, але це відчуває себе досить крутим для чогось, що можна зробити в одній gitкоманді:

  1. Створіть нову гілку під назвою issue-30-and-34 (замість перейменування старої),
  2. видалити локальну та віддалену версії issue-30,
  3. натиснути issue-30-and-34(оскільки у нього ще немає вгору по течії, Магіт запитає мене, куди натиснути).

Просимо прийняти відповідь від @tarsius замість моєї (щоб полегшити пошук відповідної інформації).
Костянтин

@ Константин готовий.
Малабарба

Відповіді:


60

Починаючи з, v2.1ви можете змінити верхню частину поточної гілки на віддалену або локальну гілку, використовуючи bu[REMOTE/]BRANCHRET. Починаючи з цього v2.4випадку, якщо вже встановлено висхідний потік, тоді він buбуде просто знятий. Натисніть uще раз, щоб встановити нове значення.

Починаючи з v2.4і якщо вихідний потік не встановлений, ви також можете встановити вгору за течією, натискаючи, використовуючи pu[REMOTE/]BRANCHRET. Ви автоматично запитаєте, яку галузь використовувати як висхідний потік. Після того, як буде встановлено верхній потік, він puбуде натискати на це, не дозволяючи вам змінити верхній потік. Отже, щоб змінити вихідний потік, ви повинні використовувати підхід, описаний у попередньому пункті.

Перш ніж v2.4можна було також встановити віддалену гілку, на яку ви підштовхуєтесь, використовуючи гілку вище за течією p-ueREMOTE/BRANCHRET. Але тепер --set-upstreamперемикач більше не доступний у спливаючому вікні push за замовчуванням . Ви можете повернути його, встановивши magit-push-current-set-remote-if-missingнуль. Це має два ефекти: --set-upstreamперемикач буде доступний знову після наступного перезапуску, а підхід, описаний у попередньому пункті, більше не працюватиме.


Якщо ви хочете, щоб обидві функції, описані у другому та третьому абзаці, були доступні одночасно, тоді не magit-push-current-set-remote-if-missingторкайтесь і додайте це до файлу init:

(magit-define-popup-switch 'magit-push-popup
  ?u "Set upstream" "--set-upstream")

11

Натисніть " P C-u C-u P", щоб Magit запитав вас, яку віддалену та віддалену гілку використовувати перед натисканням.

(З одним аргументом префікса (" P C-u P") Magit запитує, яким віддаленим користуватися.)

Я виявив це, натиснувши P C-h k Pв буфері статусу Magit, прочитавши документи magit-pushта magit-push-dwim(ці документи здаються застарілими, BTW) та експериментував.

PS: Я використовую Magit magit-1.2.0-2049-ge6839e8.


5
Ця відповідь трохи застаріла.
Szymon Wygnański


0

Станом на листопад 2016 року, і останнє magit, ось часткове рішення:

P e- дозволяє натискати elsewhere, але це не запам’ятовується

Я не міг знайти способу для магіта --set-upstream, тому я просто зробив це з терміналу, якась накрутка, але це мене перейняло над цією проблемою:

git push --set-upstream origin <branch-name>

І тепер новий вхідний потік збережений, і я можу створити своє наступне: :)


1
"Я не можу знайти шлях [...] до --set-upstream" - Можливо, вам варто спробувати прочитати відповідь
Тарсія

впевнений, саме це допомогло мені зрозуміти це. Просто magitз цього часу трохи змінився, і я сподіваюся, що моє рішення заощадить когось зайві кілька хвилин
Josh.F

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