(я предполагаю, что перед тем, как вы начнете, состояние git чистое, чтобы не потерять локальные изменения.)
Так как вы все равно создали временную ветку, почему бы вам просто не использовать git merge othercommit
для объединения в другой коммит? Конечно, ваше рабочее дерево и индекс будут обновлены с результатами слияния - оно создаст новый коммит, но если вам это не нравится, вы можете просто проверить исходную ветку, чтобы вернуться. Если вы хотите внести дополнительные изменения, чтобы исправить результаты слияния, это все равно должно быть в дополнительном коммите поверх слияния.
Кроме того, вам даже не нужно создавать временную ветку - вы всегда можете использовать git reset --hard
(с осторожностью!), Чтобы переместить вашу ветку туда, где она была.
Кстати, на (B) вы можете передать --whitespace=nowarn
на git apply
, чтобы прекратить эти предупреждения, или изменить то, что считается ошибкой пробела, изменив параметр конфигурации core.whitespace
.
Выше я бы порекомендовал вышеизложенное, но чтобы ответить на точную форму вопроса, который вы задаете, вы можете попробовать следующее:
Вы можете выполнить слияние без фиксации результата, используя:
git merge --no-commit othercommit
... которая обновит вашу рабочую копию и индекс (промежуточную область) с результатами слияния, но не создаст коммит. Однако это немного рискованно - если вы затем перейдете к дальнейшим изменениям, которых не было ни у одного из родителей, а затем совершите это, вы создадите злое слияние , которое может вызвать различные проблемы, когда вы изучаете историю позже.
Точно так же, если вы просто хотите посмотреть, каким будет эффект слияния, вы можете сделать:
git merge --squash othercommit
... который изменит ваше рабочее дерево на результаты слияния и внесет все эти изменения, но не создаст коммит. Однако, в отличие от --no-commit
, если вы продолжите коммит, он не будет записывать othercommit
как родитель нового коммита.