Это не может быть упрощено в общем случае. Как для слияния, так и для извлечения (которое использует слияние или перебазирование) может потребоваться рабочее дерево, чтобы пользователь мог разрешать потенциальные конфликты.
Могут быть и некоторые упрощающие предположения.
Если ваш локальный мастер никогда не имеет каких-либо локальных изменений (т. Е. Каждое извлечение в ваш локальный мастер всегда будет «быстрым» обновлением; возможно, это единственная причина, по которой у вас есть локальный master потому что git clone автоматически сделал его для вас), тогда вы, вероятно, можете просто проигнорировать свой локальный master и перенастроить свой локальный custom для извлечения из того же восходящего потока, который использует ваш локальный master .
# copy "upstream" config from 'master' to 'custom'
for o in remote merge rebase mergeoptions; do
v="$(git config branch.master."$o")" &&
git config branch.custom."$o" "$v"
done
Затем, чтобы объединить вышестоящий поток с custom , просто выполните git checkout custom && git pull
.
Кроме того, вы можете работать непосредственно с вашим локальным master (переместите custom коммитов на master с помощью git checkout master && git reset --hard custom
, затем вы можете отказаться или удалить заказ ).