2

比较Git 提交范围中的双点“..”和三点“...”有什么区别?,一个更常见的有用问题。

我想澄清以下是否产生与以下相同的提交集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 在过滤掉所有带有A..B. (也就是说,在这个假设的命令中,git 在尝试应用挑选逻辑之前会丢弃与 A 相关的任何内容。)

4

1 回答 1

0
git log --cherry-pick A..B

是相同的

git log --cherry-pick ^A B

这基本上是所有 B 提交,它们是 A 的注释部分。如果所有 A 提交都被删除,那么 Git 应该与什么进行比较?

于 2013-09-29T06:03:07.113 回答