Просмотрите результат git -merge перед фактическим слиянием

Есть ли способ просмотреть результат слияния между двумя ветвями до фактического их слияния?

При попытке слияния ветки A с веткой B я обычно проверяю временную ветку из B, объединяя ее с веткой A, затем создаю патч diff или просто проверяю на эту временную ветку и проверяем, все ли работает до слияния A и B.

Предоставляет ли git команду или функцию, которая выполнила бы это?

Ответ 1

Как предположил Мариан Тейзен, вы можете сделать это, чтобы выполнить слияние, не совершая

git merge --no-commit <branchname>

Вы можете вернуться из этого слияния с помощью

git reset --hard

Кроме того, помните, что всегда легко создать резервную копию в Git. Вы можете выполнить полное слияние, включая фиксацию, проверку полного результата, и если вы передумаете, вы можете

git reset --hard HEAD^

чтобы выбросить слияние и вернуться к фиксации до слияния.

Фактически, в любой момент во время разрешения слияния вы можете сделать

git reset --merge

Чтобы прервать слияние и выбросить только изменения слияния.

Ответ 2

Я называю это "рабочий процесс проверки кода" и делаю это все время.

git merge --no-commit --no-ff branchname

Без флага --no-ff, если Git может выполнить перемотку вперед, тогда он сделает это. (Как и ожидалось, как и в случае быстрой перемотки вперед, нет никакой фиксации слияния для создания.)

У меня есть эта настройка псевдонимов в .gitconfig для удобства:

rev = merge --no-ff --no-commit

Так что я могу просто сделать:

git rev branchname

Идея состоит в том, что все функции разрабатываются в отдельных ветвях, и каждая функция просматривается и объединяется кем-то, кроме автора. Как указывалось в других ответах, вы можете прервать слияние с помощью:

git reset --merge

и попросите автора внести дополнительные изменения.

Чтобы просмотреть журнал только слиянием слияния, я использую этот другой псевдоним:

revlog = log --first-parent

Таким образом, журнал становится временной шкалой больших шагов: функция по функции, а не фиксация фиксацией.

Ответ 3

Зачем беспокоиться? Просто выполните слияние, протестируйте его, и если вам это не нравится, то git reset --hard HEAD^ вернется в состояние предварительного слияния. Выполнение какого-то временного или промежуточного слияния просто увеличивает вашу работу независимо от того, решите ли вы сохранить слияние или нет.