magit для `pull --rebase upstream` (не происхождение)
Допустим, у нас есть upstream
Git репозиторий, который является официальным домом проекта, и origin
это наш собственный удаленный репозиторий git (например, github fork).
В командной строке я бы перебазировал к мастеру перед выдачей PR с
git pull --rebase upstream master
но как мне сделать это в magit? F
команда позволяет --rebase
но это всегда против моего origin
насколько я могу судить.
В идеале, я хотел бы сделать это с помощью одной команды под F
меню, так как это очень распространенная операция для меня.
2 ответа
В magit
, вы можете использовать C-u
префиксный аргумент, позволяющий вам установить пульт для операций push и pull. Вы бы набрали C-u F -r F upstream<RET>
сделать это. Если вам нужно также указать название ветви, вы можете удвоить C-u
префикс: C-u C-u F -r F upstream<RET> master<RET>
, В следующей версии Magit, 2.1.0, это будет доступно в более доступных F -r o
вместо того, чтобы использовать префиксный аргумент.
Если это слишком громоздко, я предлагаю явно установить upstream в вашем .git/config
; тогда все тяги придут от этого вверх по течению. Вы можете сделать это с git branch -u upstream/master
находясь в вашем местном отделении, или git branch -u upstream/master mybranch
если вы находитесь на другой ветке. Затем, используете ли вы Magit или git
в командной строке, простой git pull --rebase
или же F -r F
потянет из настроенной ветки.
Если вам нужно подтолкнуть к своему личному репо во время вытягивания из другого репо, вы всегда можете настроить отдельные пульты для толчков и вытягиваний. Я не знаю удобной оболочки команд для этого, но если вы отредактируете .git/config
напрямую, вы бы сделали это следующим образом:
[branch "mybranch"]
remote = upstream
pushremote = origin
merge = refs/heads/master
Если вы делаете это и всегда будете перебазировать вашу локальную ветку, вы можете даже добавить:
rebase = true
И не надо указывать --rebase
когда ты тянешь.
Если вы хотите сделать это для всего репо, а не для одной ветки, вы можете использовать:
[remote]
pushdefault = origin
Затем ветки извлекают из их настроенного апстрима, но подталкивают к собственному репо.
Если вы откроете magit-pull-popup
, есть переменная / опция для переключения rebase.