我知道樱桃选择是为了应用一些中间提交而发明的,但确实存在以下任何区别:
git cherry-pick last_commit_from_branch
和
git merge some_branch
据我所知,git不仅会应用这一次提交,还会应用所有先前提交的常见提交吗? 如果是,那么这些行的唯一区别在于,在合并的情况下,新提交将具有来自这些分支的两个父提交。
答案 0 :(得分:4)
这两个命令在很大程度上都是不同的。
让我们从git cherry-pick
开始:
diff
提交的提交diff
应用于您当前所在的HEAD
。这意味着它不会考虑任何父提交来完成平滑和正确的合并。现在让我们来看看合并的作用。(为了简单起见,我们看一下常见的3-way合并)
A
|
1--2--3--4
|
5--6--7
|
B
现在假设您要合并它们。 git现在会做什么?
A
和B
的最常见祖先,在这种情况下为2
。4
和7
带来的更改,并再次匹配2
以获得合并的差异。更详细:如果您在2
和7
中进行了更改,则会在合并发生变化时从A
进行更改,反之亦然。因此,与简单的樱桃选择相比,合并有可能在进行实际合并时考虑更多信息。