При вызове magit-push-current
с P P
помощью буфера состояния Magit 2.1.0
спрашивает меня, где нажать на ветку в первый раз, когда восходящий поток не установлен.
Как он может позволить автоматически генерировать имя, как раньше?
При вызове magit-push-current
с P P
помощью буфера состояния Magit 2.1.0
спрашивает меня, где нажать на ветку в первый раз, когда восходящий поток не установлен.
Как он может позволить автоматически генерировать имя, как раньше?
Ответы:
Обновление: упомянутая ниже "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
set origin/master
as upstream, но я бы ожидал, origin/branch-name
что upstream.
P -p P <... completion ...> RET
Обратите внимание, что origin/branch-name
он предлагается в качестве кандидата на завершение, поэтому вам не нужно его печатать.
Я использую следующий совет, который автоматически включается, --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)
Я просто создаю новую ветвь с помощью, 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, которая бы выполняла то же самое. Попытка установить пульт не работает, потому что он еще не существует в источнике.
bu
. Но это использует, git branch --set-upstream-to
и, как вы знаете, Git не может установить несуществующую ветвь в качестве восходящего потока, и поэтому Magit также не может.
some-branch-name
наorigin
пульт, вы, вероятно, можете просто напечатать,o TAB s TAB
и вы получите желаемое имя.