Magit - Как я могу оформить удаленную ветку локально, не набирая полное имя ветви?

12

У меня есть удаленная ветка remote-branch-long-name. Когда я произвожу проверку с завершением руля, я могу напечатать remote-branchи origin/remote-branch-long-nameпоявится в качестве опции. Проблема заключается в том, что для извлечения этой ветки локально я фактически не могу переключиться на эту ветку, мне нужно переключиться на remote-branch-long-name (without the origin/ prefix)нее, так как helm не предоставляет это в качестве опции завершения, я должен вручную ввести полное имя ветви.

Есть ли другая функция, которую я должен использовать для этого варианта использования, или я должен взломать функцию вместе?

нерегулярный
источник

Ответы:

22

Похоже, проблема, которую вы пытаетесь решить, - это не проблема, с которой вы сталкиваетесь. Git не позволяет вам работать локально с удаленными ветками ( origin/remote-branch-long-nameвы видите, что это просто ветка отслеживания; вы не можете работать с ней напрямую), а Magit направляет вас к намеченному рабочему процессу.

Поскольку вы хотите работать с origin/remote-branch-long-nameвами, вероятно, следует запустить magit-branch-and-checkout( b c). Выберите, origin/remote-branch-long-nameи он запросит у вас имя локальной ветви и по умолчанию будет иметь значение «имя-удаленной ветви-длинное». Это дает вам местное отделение, чтобы внести ваши изменения. Когда вы закончите с вашими изменениями и нажмите на origin/remote-branch-long-nameнего, обновится ветка удаленного отслеживания.

Вы можете иметь локальные ветви с косой чертой в них, но использование удаленного имени в имени локальной ветви может привести к путанице. Git запоминает, с какого удаленного локального филиала было извлечено, так что вам не нужно отслеживать его самостоятельно.

Для более полного объяснения, чем мой ответ здесь (!), Вы найдете эту страницу хорошим обзором пультов.

ebpa
источник
8
Я думаю, что разъединение здесь - то, что поток Magit отличается от потока мерзавца. Если вы запускаете git checkout foo, и fooэто не ветвь, а origin/fooесть, git создаст новую ветку fooи установит ее для отслеживания origin/foo. Так что git учит вас думать: «Я просто проверяю foo, а git делает все необходимое». Но это не работает с magit; Бег magit-branch-and-checkoutэто путь.
zck
4

Начиная с magit v2.12.0, есть команда magit-branch-checkout, связанная с b l(Checkout local branch), которая делает именно то, что вы хотите. Смотрите документ для деталей.

Emoses
источник