--cherry-pick
选项说明:
省略任何在“另一方”引入与另一次提交相同的提交的提交
对于下一个git命令,我看到下一棵树:
$ git log --graph --decorate --pretty=oneline --abbrev-commit --cherry-mark --boundary --left-right bc2820d...b8d09ce
< bc2820d (openapi3) Merge branch 'openapi3_exception_handling' into openapi3
|\
| = 4e1e0aa Testcase for not_found/exception requests to api
| = b39673d 'not_found' templates should not be probed automatically. Only when fallback
| = a8677df Dump empty schemas and non empty data
| = 27db48f Implemente before_render hook
|/
< aa60f0a Merge branch 'hide_temporal_interface' into openapi3
|\
| = 5dd02f2 Mutate current object after update
| = d58c0ab Install missed modules
|/
| > b8d09ce (xtucha/openapi3) Merge branch 'openapi3_exception_handling' into openapi3
| |\
| | = b6362ad Testcase for not_found/exception requests to api
| | = dc926cc 'not_found' templates should not be probed automatically. Only when fallback
| | = 55dc88d Dump empty schemas and non empty data
| | = 8369185 Implemente before_render hook
| |/
| > c03438d Merge branch 'hide_temporal_interface' into openapi3
| |\
| | = d534cc4 Mutate current object after update
| | = 1b6af27 Install modules required by MonkeyMan
| |/
| > a3b7230 Clarify schema
|/
o f5b06ed Assign some defaults
如果我只想查看新提交,我添加--left-only
选项并在输出中获取合并提交。
< bc2820d (openapi3) Merge branch 'openapi3_exception_handling' into
< aa60f0a Merge branch 'hide_temporal_interface' into openapi3
这提交在&#34;另一方&#34;
上引入与另一个合并提交相同的更改为什么不省略这些提交?
UPD
从上面的例子中我只期望输出一行:
> a3b7230 Clarify schema
答案 0 :(得分:2)
合并本身被认为位于...
的左侧,这也是图表输出中标有<
而不是>
的原因。
要消除git rev-list
或git log
输出的合并,请添加--no-merges
或--max-parents=1
(这两种拼写是同一选项)。
编辑,重新提问编辑:for&#34; git cherry&#34;和类似的目的,每个 merge 提交都被认为是唯一的。也就是说,它永远不会与任何其他提交相同,无论其他提交是否合并。 (这有多种内部原因,最重要的是合并提交有多个父级。要计算补丁ID ,Git需要将子提交与单个父级进行比较。)
(编辑2:上述声明可能有误:git show <merge> | git patch-id
计算合并的组合差异的补丁ID。因此,产生相同组合差异的两个合并可能会生成相同的补丁ID,因此可以考虑& #34;相同的&#34;由git cherry
。但在大多数情况下,合并提交的组合差异不会与它合并的任何提交的常规,非组合差异相匹配,这意味着在实践中,合并在git cherry
或git rev-list --cherry-mark
或类似内容中会显得唯一。)