" A..B" (双点)vs" - 右边A ... B" Git提交范围中的(过滤后的三点)?

时间:2013-09-28 20:41:30

标签: git git-log git-cherry-pick git-rev-list

比较What are the differences between double-dot ".." and triple-dot "..." in Git commit ranges?,这是一个更常用的问题。

我想澄清以下内容是否与git log A..B生成相同的提交:

# version 1
git log --right-only A...B 

# version 2
#
# (The sed part keeps only the righthand lines, and strips the > character)
git log --left-right --format=oneline A...B | sed -n "s/^>//p"

他们似乎似乎更加迂回地完成同样的事情。

最初的动机是更深入地理解这些命令的含义,这涉及忽略已经选择过的提交:

# version 1a
#
# Literally taken from the git-log help page, which explains what this means
git log --cherry-pick --right-only A...B 

# version 2a
#
# This is a simplified version of something in the git code. (In particular,
# in git-rebase--interactive.sh.)
git log --left-right --cherry-pick --no-merges --format=oneline A...B | sed -n "s/^>//p"

这个问题的一个扩展是要问为什么需要对称差异(即三点)来进行这种“单侧”樱桃挑选消除。例如,要查找B上的唯一提交,包括对樱桃选择的更正,不应该能够做一些简单的事情

git log --cherry-pick A..B

我想这是因为git在之后应用了cherry-pick-removal逻辑,它将所有A提交过滤掉A..B。 (也就是说,在这个假设的命令中,git会在尝试应用采摘逻辑之前丢弃与A相关的任何内容。)

1 个答案:

答案 0 :(得分:0)

git log --cherry-pick A..B

相同
git log --cherry-pick ^A B

基本上所有的B提交,都是A的注释部分。如果所有A提交都被删除,那么Git应该比较樱桃选择?