Как не дать Мэгиту спросить, куда подтолкнуть ветку?
10
При вызове magit-push-currentс P Pпомощью буфера состояния Magit 2.1.0спрашивает меня, где нажать на ветку в первый раз, когда восходящий поток не установлен.
Как он может позволить автоматически генерировать имя, как раньше?
Если вы не знаете, автоматически сгенерированное имя является одним из вариантов завершения. Итак, когда вы впервые нажимаете some-branch-nameна originпульт, вы, вероятно, можете просто напечатать, o TAB s TABи вы получите желаемое имя.
Малабарба
О, хорошо, я не знал, спасибо. Проблема в том, что у меня много веток, начинающихся с одинаковых префиксов, что не очень удобно, также я всегда ставлю удаленные ветки с тем же именем, что и локальные ветки.
z1naOK9nu8iY5A
Ответы:
8
Обновление: упомянутая ниже "push ветка" уже реализована. Для получения дополнительной информации см. Документацию о ветвлении .
Вы должны установить ветку upstream один раз. Как только вы это сделаете, это P Pподтолкнет к этому, и вы получите списки невыполненных и невыпущенных изменений в буфере состояния (если они есть).
Существуют различные способы установить ветку upstream. Вы можете использовать --set-upstreamпереключатель из толкающего всплывающего окна: P -u P. Или используйте команду , которая устанавливает вверх по течению и ничего не делает: b u.
Также Magit теперь автоматически устанавливает восходящую ветвь при создании новой ветки, при условии, что «отправной точкой» является имя ветки. Это работает для локальных и удаленных «апстримов». Но обратите внимание, что если вы выберете локальную ветвь в качестве отправной точки, то это не поможет вам в продвижении. Перенос из текущего репозитория в текущий репозиторий, очевидно, не имеет смысла и запрещен.
Поэтому, когда «восходящая» ветвь фактически является другой локальной ветвью, она P Pведет себя так, как если бы восходящая ветвь не была настроена, и ведет себя точно так же P e. То же самое в случае, если восходящий поток не настроен вообще.
Это связано с ограничением в Git: с какой-либо веткой можно связать только одну другую ветвь, и тогда эта ветка называется «восходящей веткой». Было бы лучше, если бы была хотя бы ветка «вверх по течению» и «публикация». Я намерен реализовать это в Magit в конце концов. Смотрите выпуск № 1485 .
Таким образом, если вы хотите иметь возможность использовать только что, P Pтогда ветвь «вверх по течению» должна быть, например, «origin / master», а не «master».
Я рассматриваю возможность добавления push-варианта, который всегда выполняется git pushбез каких-либо аргументов. То, что это делает, будет зависеть исключительно от конфигурации Git.
Я получил ответвление, masterи он не установил восходящий поток. Должен ли я перейти от него, origin/masterчтобы автоматически установить исходящий поток?
z1naOK9nu8iY5A
Смотрите обновленный ответ.
Tarsius
1
Ответвление от origin/masterset origin/masteras upstream, но я бы ожидал, origin/branch-nameчто upstream.
z1naOK9nu8iY5A
Если это то, что вы хотите, то лучше всего делать это во время пуша. P -p P <... completion ...> RETОбратите внимание, что origin/branch-nameон предлагается в качестве кандидата на завершение, поэтому вам не нужно его печатать.
Tarsius
2
Это болезненно, когда вы используете запросы gitflow и pull для проверки кода с ветвью для каждой функции, потому что вы обычно нажимаете только один раз, и всегда создается удаленная ветка с тем же именем, что и у локальной ветки. Нажатие на другую именованную ветвь будет завершением обзора кода.
Барри Келли
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:
Я просто создаю новую ветвь с помощью, b cа затем редактирую .git/configфайл, чтобы он указывал на него, origin/branchа не манипулировал всеми вещами из magit 2, которые, похоже, не работают в любом случае.
Это работает, в то время как я до сих пор не нашел комбинацию клавиш в magit2, которая бы выполняла то же самое. Попытка установить пульт не работает, потому что он еще не существует в источнике.
Восходящий поток может быть установлен с помощью bu. Но это использует, git branch --set-upstream-toи, как вы знаете, Git не может установить несуществующую ветвь в качестве восходящего потока, и поэтому Magit также не может.
Tarsius
@tarsius magit 1, казалось, делал то, что мне было нужно. Я просто пытаюсь вернуть какое-то подобие этого рабочего процесса.
some-branch-name
наorigin
пульт, вы, вероятно, можете просто напечатать,o TAB s TAB
и вы получите желаемое имя.Ответы:
Обновление: упомянутая ниже "push ветка" уже реализована. Для получения дополнительной информации см. Документацию о ветвлении .
Вы должны установить ветку upstream один раз. Как только вы это сделаете, это P Pподтолкнет к этому, и вы получите списки невыполненных и невыпущенных изменений в буфере состояния (если они есть).
Существуют различные способы установить ветку upstream. Вы можете использовать
--set-upstream
переключатель из толкающего всплывающего окна: P -u P. Или используйте команду , которая устанавливает вверх по течению и ничего не делает: b u.Также Magit теперь автоматически устанавливает восходящую ветвь при создании новой ветки, при условии, что «отправной точкой» является имя ветки. Это работает для локальных и удаленных «апстримов». Но обратите внимание, что если вы выберете локальную ветвь в качестве отправной точки, то это не поможет вам в продвижении. Перенос из текущего репозитория в текущий репозиторий, очевидно, не имеет смысла и запрещен.
Поэтому, когда «восходящая» ветвь фактически является другой локальной ветвью, она P Pведет себя так, как если бы восходящая ветвь не была настроена, и ведет себя точно так же P e. То же самое в случае, если восходящий поток не настроен вообще.
Это связано с ограничением в Git: с какой-либо веткой можно связать только одну другую ветвь, и тогда эта ветка называется «восходящей веткой». Было бы лучше, если бы была хотя бы ветка «вверх по течению» и «публикация». Я намерен реализовать это в Magit в конце концов. Смотрите выпуск № 1485 .
Таким образом, если вы хотите иметь возможность использовать только что, P Pтогда ветвь «вверх по течению» должна быть, например, «origin / master», а не «master».
Я рассматриваю возможность добавления push-варианта, который всегда выполняется
git push
без каких-либо аргументов. То, что это делает, будет зависеть исключительно от конфигурации Git.источник
master
и он не установил восходящий поток. Должен ли я перейти от него,origin/master
чтобы автоматически установить исходящий поток?origin/master
setorigin/master
as upstream, но я бы ожидал,origin/branch-name
что upstream.P -p P <... completion ...> RET
Обратите внимание, чтоorigin/branch-name
он предлагается в качестве кандидата на завершение, поэтому вам не нужно его печатать.Я использую следующий совет, который автоматически включается,
--set-upstream
когда текущая ветвь еще не имеет восходящего потока:В сочетании с завершением ido это позволяет открыть новую ветку P P RET:
источник
Я просто создаю новую ветвь с помощью,
b c
а затем редактирую.git/config
файл, чтобы он указывал на него,origin/branch
а не манипулировал всеми вещами из magit 2, которые, похоже, не работают в любом случае.Изменить:
к
Это работает, в то время как я до сих пор не нашел комбинацию клавиш в magit2, которая бы выполняла то же самое. Попытка установить пульт не работает, потому что он еще не существует в источнике.
источник
bu
. Но это использует,git branch --set-upstream-to
и, как вы знаете, Git не может установить несуществующую ветвь в качестве восходящего потока, и поэтому Magit также не может.