Как сделать git merge, но не используя последний коммит - PullRequest
0 голосов
/ 16 октября 2018

У меня есть ветка master и ветка develop.Ветвь develop опередила master примерно на 10 коммитов, но версия, одобренная клиентом, включала только первые 8 коммитов.

Как объединить только первые 8 коммитов из develop в master?

Обычно я делал бы это:

git checkout master
git merge develop

Но очевидно, что это слилось бы во все коммиты develop.

Ответы [ 4 ]

0 голосов
/ 16 октября 2018

вы можете получить версию слияния и создать временную ветку, например:

# find the commit id
git log --oneline 

# checkout new branch by commit id 
git checkout commitID  -b tmp

# Switched to branch 'master'
git checkout master

git merge tmp

# delete branch
git branch -d tmp
0 голосов
/ 16 октября 2018

Вы можете объединиться с помощью хэша коммитов SHA-1, например,

git checkout master
git merge 3JH9sdx8

, где 3JH9sdx8 - хеш коммитов develop из двух коммитов до HEAD ветви.Чтобы найти этот 3JH9sdx8 хеш, вы можете использовать git log develop и проверить.

0 голосов
/ 16 октября 2018

Вы можете использовать команду cherry-pick.

Первая команда git log даст вам хэш предыдущих коммитов, а затем вы можете использовать команду git cherry-pick [yourHashString] для объединения указанного коммита с текущимфилиал.

0 голосов
/ 16 октября 2018

Вы можете создать версию ветви 2 назад

git checkout dev
git checkout -b devapproved @~2

Затем вы можете объединить эту ветку

git checkout master
git merge devapproved
...