如何 git 合并,但不使用最新的提交

How to git merge, but not using the latest commit

我有一个 master 分支和一个 develop 分支。 develop 分支比 master 提前了大约 10 次提交,但客户批准的版本仅包含前 8 次提交。

如何仅将 develop 的前 8 个提交合并到 master

通常我会这样做:

git checkout master
git merge develop

但显然这将合并所有 develop 提交。

你可以创建一个分支2版本回来

git checkout dev
git checkout -b devapproved @~2

然后你可以合并那个分支

git checkout master
git merge devapproved

您可以通过 SHA-1 提交哈希合并,例如

git checkout master
git merge 3JH9sdx8

其中 3JH9sdx8develop 的提交散列,来自分支 HEAD 之前的两次提交。要找到 3JH9sdx8 哈希,您可以使用 git log develop 并检查。

您可以使用 cherry-pick 命令。

首先 git log 命令为您提供先前提交的哈希,然后您可以使用 git cherry-pick [yourHashString] 命令将指定的提交合并到当前分支。

您可以获得合并的版本并创建临时分支,例如:

# 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