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.

Другие вопросы по тегам