Слияние до определенного коммита

Я создал новую ветвь с именем newbranch из ветки master в git. Теперь я сделал некоторую работу и хочу объединить newbranch в master; однако я внес некоторые дополнительные изменения в newbranch, и я хочу объединить newbranch до четвертого от последнего коммита до master.

Я использовал cherry-pick, но он показывает сообщение для использования правильных параметров:

git checkout master    
git cherry-pick ^^^^HEAD newbranch

Могу ли я использовать git merge вместо этого?

git merge newbranch <commitid>

Ответ 1

Конечно, находясь в ветке master, все, что вам нужно сделать, это:

git merge <commit-id>

где commit-id - хэш последнего коммита из newbranch, который вы хотите получить в своей ветке master.

Вы можете узнать больше о любой команде git, выполнив git help <command>. В этом случае это git help merge. И документы говорят, что последний аргумент для команды merge <commit>..., поэтому вы можете передать ссылку на любую фиксацию или даже на несколько коммитов. Хотя, я никогда не делал последнего сам.

Ответ 2

Чтобы очистить ветвление, вы можете сделать это:

git checkout newbranch
git branch newbranch2
git reset --hard <commit Id> # the commit at which you want to merge
git checkout master
git merge newbranch
git checkout newbranch2

Таким образом, newbranch закончится там, где он был объединен с мастером, и вы продолжите работу над newbranch2.

Ответ 3

Запустите приведенную ниже команду в текущую папку ветки, чтобы объединить эту <commit-id> с текущей веткой, --no-commit не делать новый коммит автоматически

git merge --no-commit <commit-id>

git merge --continue можно запустить только после того, как слияние привело к конфликтам.

git merge --abort Прервать текущий процесс разрешения конфликтов и попытаться восстановить состояние перед слиянием.