Похоже, что simple notypeclasses refine {| obj := _ |}
выполняет трюк.
{| obj := _|}
- это синтаксис записи, который работает как сокращенное обозначение Build_Category _ _ _ _ _
. simple notypeclasses refine
- все одной тактикой. Это вариант notypeclasses refine
, который не откладывает цели и не выполняет никаких действий. unshelve
нет универсального комбинатора notypeclasses
. Есть только notypeclasses refine
и simple notypeclasses refine
. Для отладки вы можете использовать (недокументированные) Set Typeclasses Debug
. Это показывает, что eapply Build_Category
разрешает некоторые типы классов, а refine {| obj := _|}
еще хуже.
В стороне, я не думаю, что имеет смысл иметь Class Category
без каких-либо параметров уровня уровня - почему бы вам когда-либо хотеть, чтобы любая категория автоматически определялась?
Я не думаю, что git merge
- это правильный процесс для вашей ситуации. Возможно, вы захотите cherry-pick
сделать один или два коммита в корневую ветвь (только те коммиты, которые не содержат новые файлы). Я предлагаю это, потому что функция слияния в Git предназначена для переноса всей ветви в другую.
С учетом сказанного можно сделать merge
и достичь своей цели. Для этого выполните слияние, не позволяя процессу merge
создать commit
. Результатом будет набор изменений, подготовленных для фиксации. Затем вы можете изменить свои поэтапные изменения (путем удаления файлов, которые вы не хотите объединять) перед выполнением окончательной фиксации.
Исходя из приведенного выше примера, вы сначала должны оформить ветку X , а затем:
git merge Y --no-commit --no-ff
Если это было чистое слияние, то после В команде вы должны увидеть сообщение:
«Автоматическое объединение прошло успешно; остановка перед фиксацией по запросу»
С этого момента вы можете отменить удаление любых изменений, которые вы не хотите объединять, а затем выполнить git commmit
только с необходимыми объединенными изменениями.