【发布时间】:2020-05-04 16:01:46
【问题描述】:
我从我的主分支创建了一个新分支。在我的新分支中,我有一些提交(A-B-C-D-E)。我想将提交 C 和之前的所有内容合并到 master 中。我知道我可以使用cherrypick A、C 和C。但是有没有办法告诉git 包含C 和之前的所有内容并合并到master 中?
【问题讨论】:
我从我的主分支创建了一个新分支。在我的新分支中,我有一些提交(A-B-C-D-E)。我想将提交 C 和之前的所有内容合并到 master 中。我知道我可以使用cherrypick A、C 和C。但是有没有办法告诉git 包含C 和之前的所有内容并合并到master 中?
【问题讨论】:
只需运行git merge <em>hash-of-desired-commit</em>。
事实上,git merge 就是这样工作的。 Git 不基于 branches,1 合并,而是基于 commits。当您运行git merge <em>branch-name</em> 时,Git 将名称转换为提交哈希,然后 然后 与哈希进行合并。该名称的唯一作用是设置默认提交 message(例如,merge branch br 或 merge branch br into feature)。
1更准确地说,我的意思是分支名称。另请参阅What exactly do we mean by "branch"? 当您指定提交哈希时,生成的合并包含提交图的子集,并且单词 branch also 表示 a 的某个子集提交图,所以从这个意义上说,Git 确实合并了“分支”。
这里的问题是branch这个词本身被过度使用了,这耗尽了它的意义。你有没有参加过每个人都叫布鲁斯的派对? “嘿,布鲁斯!布鲁斯让我告诉你布鲁斯给布鲁斯打了电话,转达布鲁斯无法做到的事情。请告诉布鲁斯,好吗?” (哪个布鲁斯实际上不会成功?)
【讨论】: