Просмотрите результат 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^
вернется в состояние предварительного слияния. Выполнение какого-то временного или промежуточного слияния просто увеличивает вашу работу независимо от того, решите ли вы сохранить слияние или нет.