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 запоминает, с какого удаленного локального филиала было извлечено, так что вам не нужно отслеживать его самостоятельно.

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


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), которая делает именно то, что вы хотите. Смотрите документ для деталей.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.