Случай использования: каждый раз, когда я хочу переместить фиксацию из одной ветки git в другую, я выполняю следующую последовательность действий:
- [фиксация в рабочей ветке]
-
git checkout
branch-to-merge-into -
git cherry-pick
target-commit -
git push
-
git checkout
рабочая ветвь
Это прекрасно работает с единственным исключением - каждый раз, когда я выполняю 'git checkout' git содержимое рабочего каталога изменяется (ожидается), и это приводит к тому, что моя IDE (IntelliJ IDEA) выполняет обновление внутреннего состояния (поскольку контролируемый файл системное поддерево изменено внешне). Это действительно раздражает, особенно в случае большого количества мелких коммитов.
Я вижу два пути:
- выполнять "массовые выборки вишни", т.е. выполнять большое количество коммитов; переместите их в другую ветку, скажем, в рабочий день;
- иметь второй локальный репозиторий git и выполнять на нем вишневый выбор, то есть каждый раз, когда фактическая фиксация и нажатие выполняются в рабочей ветке, перейдите в этот второй репозиторий, потяните за изменения и выполните выбор вишни;
Мне не нравится первый подход, потому что его можно забыть переместить конкретную фиксацию. Второй выглядит немного... неестественно.
В принципе, было бы идеально, если бы я мог сказать git 'переместить это commit из ветки с именем branchX в ветвь ветки X + 1' без обновления рабочего каталога.
Вопрос: возможно ли выполнить вышеуказанное?