Когда вы нажимаете ветку с помощью 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
команде:
- Создайте новую ветвь с именем
issue-30-and-34
(вместо переименования старой), - удалить как локальную, так и удаленную версии
issue-30
, - push
issue-30-and-34
(так как у него еще нет восходящего потока, Magit спросит меня, где нажать).
Ответы:
Начиная с,
v2.1
вы можете изменить восходящий поток текущей ветви на удаленную или локальную ветку, используя bu[REMOTE/]BRANCH
RET. Начиная с тогоv2.4
, что если восходящий поток уже установлен, то buпросто сбросим его. Нажмите еще uраз, чтобы установить новое значение.Начиная с,
v2.4
и если восходящий поток не установлен, вы также можете настроить восходящий поток, нажимая с помощью pu[REMOTE/]BRANCH
RET. Вас автоматически спросят, какую ветку использовать в качестве восходящего потока. Как только восходящий поток будет настроен, puон подтолкнет к этому, не позволяя вам изменить восходящий поток. Таким образом, чтобы изменить восходящий поток, вы должны использовать подход, описанный в предыдущем абзаце.Раньше
v2.4
также было возможно установить удаленную ветвь, которую вы отправляете, в качестве восходящей ветви, использующей p-ueREMOTE/BRANCH
RET. Но теперь--set-upstream
переключатель больше не доступен во всплывающем окне по умолчанию . Вы можете получить его обратно, установивmagit-push-current-set-remote-if-missing
на ноль. Это имеет два эффекта:--set-upstream
переключатель будет снова доступен после следующего перезапуска, и подход, описанный в предыдущем абзаце, больше не будет работать.Если вы хотите, чтобы обе функции, описанные во втором и третьем абзацах, были доступны одновременно, оставьте без изменений
magit-push-current-set-remote-if-missing
и добавьте это в свой файл инициализации:источник
Нажмите «
P C-u C-u P
», чтобы Magit спросил, какую удаленную и удаленную ветку использовать, прежде чем нажать.(С одним префиксным аргументом ("
P C-u P
") Magit спрашивает, какой пульт использовать.)Я нашел это, нажав
P C-h k P
в буфере статуса Magit, прочитав документыmagit-push
иmagit-push-dwim
(эти документы, кажется, устарели), и экспериментируя.PS: я использую Magit
magit-1.2.0-2049-ge6839e8
.источник
Похоже, что теперь он находится в разделе branch / configure:
b
C
p
установить pushRemoteисточник
По состоянию на ноябрь 2016 года и позднее
magit
, вот частичное решение:P
e
- позволяет толкатьelsewhere
, но это не запоминаетсяЯ не мог найти способ для magit
--set-upstream
, поэтому я просто сделал это из терминала, вроде обмана, но это помогло мне справиться с этой проблемой:git push --set-upstream origin <branch-name>
И теперь новый апстрим сохранен, и я могу построить следующую вещь :)
источник
--set-upstream
» - возможно, вам стоит попробовать прочитать ответmagit
с тех пор немного изменился, и я надеюсь, что мое решение сэкономит кому-то лишние несколько минут