2013-05-27 6 views
11

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

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

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

+3

'git merge --no-commit' –

ответ

18

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

git merge --no-commit <branchname> 

Вы можете поддержать из этого слияния с

git reset --hard 

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

git reset --hard HEAD^ 

выбросить слияния и вернуться в коммят перед слиянием.

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

git reset --merge 

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

2

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

11

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

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 

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

+0

В ускоренном слиянии нет риска. Быстрые переходы слияний являются лучшими: нет риска, нет политики, просто переместите указатель ветви вперед. Почему кто-то так небрежно использует этот флаг --no-ff для меня загадка. Если кто-нибудь может пролить свет на это, сделайте это. По собственному опыту я предупреждал бы людей, чтобы они действительно понимали, что такое ускоренная пересылка, прежде чем принимать решение против него. –

+0

@PaulvanLeeuwen Я согласен с вашими чувствами. Но это не случай «случайного использования флага' --no-ff ». Это ответ на конкретный вопрос о пересмотре изменений до слияния. Хотя fast-forward не является слиянием, использование '-no-ff' похоже на намерение OP. – janos

Смежные вопросы