我知道,樱桃键是用于应用一些中间提交的,但确实存在:
之间的任何区别git cherry-pick last_commit_from_branch
和
git merge some_branch
据我了解,Git不仅将应用这一提交,而且还会应用所有以前的提交,从共同的提交开始?如果是的,那么这些行的唯一区别是,如果合并新提交,则将有两个父母从这些分支中提交。
这两个命令都以非常实质的方式不同。
让我们从git cherry-pick
开始:
- 樱桃的挑选字面意思是
diff
提交的提交 - 它的字面意思是在您当前正在使用的
HEAD
上应用此diff
。这意味着没有考虑任何父母就可以完成平稳正确合并。 - 樱桃挑选不会与您从中挑选的分支建立任何连接。有一个参考您从中获取的提交,但此引用仅在提交消息中。
现在让我们看一下合并的作用。
A
|
1--2--3--4
|
5--6--7
|
B
现在可以说您想合并它们。git现在会做什么?
- 首先,它将尝试找到
A
和B
的最常见祖先,即2
。在这种情况下。 - 现在,它将确定
4
和7
带来的更改并再次匹配2
以获得合并的差异。更详细地详细介绍:如果您在2
中具有更改,并且在7
中,将对A
进行更改,反之亦然。
因此,合并有可能在进行实际合并的同时考虑更多信息。