4

Я хочу объединить пользовательские ветви в master, однако перед фиксацией слияния сделайте проверку и модификацию кода.

Например:

o---o---o---o---o master
    \
     o---o---o lucy

Как правило, git merge lucy будет выглядеть так:

                    ,-- "Merge commit"
                    |
o---o---o---o---o---o master
    \              /
     o---o---o----' lucy

и после проверки и изменения кода:

                    ,-- "Merge commit"
                    |   ,-- "Code review: 1) fixed EOL char, 2) apply tabsize=4, ..."
                    |   |
o---o---o---o---o---o---o master
    \              /
     o---o---o----' lucy

Вместо этого я хочу сделать коммит слияния и коммит с проверкой кода как единый коммит:

                    ,-- "Code review & merge: 1) fixed EOL char, 2) apply tabsize=4, ..."
                    |
o---o---o---o---o---o master
    \              /
     o---o---o----' lucy

Я попробовал git merge --no-commit , однако после этого я не могу сделать последующий коммит как merge-commit.

Любая идея?

3 ответа3

2

Попробуйте следующий рабочий процесс. После того, как Люси сделано, вместо слияния ребаз. git checkout lucy; git rebase master . После этого момента последний коммит lucy будет таким же, как и при слиянии lucy с master.

o---o---o---o---o master
                 \
                  o---o---o lucy'

Попросите вашего рецензента кода пересмотреть Люси. При необходимости внесите изменения в lucy (* коммит ниже), затем выполните тривиальное (например, fastforward, если вы не используете --no-ff, который я рекомендую) объединение из lucy на master.

o---o---o---o---o---------------o master
                 \             /
                  o---o---o---* lucy'

Единственный другой вариант - сделать слияние с мастером, а НЕ делиться / толкать своего мастера. Сделайте проверку кода на своем главном устройстве, а затем сбросьте слияние lucy и переместите исправление проверки кода на lucy, а затем снова объедините. Очень подвержен ошибкам и конфликтам.

Позже я прочитал ваш комментарий, что вы не можете контролировать ветку пользователя. Ваш единственный вариант - предыдущий абзац, который заканчивается "очень подвержен ошибкам и конфликтам".

1

Если вы не можете контролировать филиал вашего студента, создайте новый собственный филиал, чтобы выполнить слияние:

o---o---o---o---o---o master
   \                 \
    |                  * lucy_merge
    \              
     o---o---o----o lucy

Выполните слияние и последующие корректировки:

o---o---o---o---o---o master
   \                 \
    |                 o---o---* lucy_merge
    \                /
     o----o----o----o lucy

После этого вы можете либо объединить мастер, если у него были другие коммиты, либо если были необходимы очистки:

o---o---o---o---o---o---?---?---* master
   \                 \         /
    |                 o---o---o lucy_merge
    \                /
     o----o----o----o lucy

Или просто переместите головку мастера и отбросьте ветвь слияния, если в мастере не было никаких изменений и очистка не требовалась:

o---o---o---o---o---o
   \                 \         
    |                 o---* master
    \                /
     o----o----o----o lucy
0

Просто выполните обычное слияние, а затем измените предыдущий коммит, используя git commit --amend при фиксации вашего коммита рецензирования.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .