我经常使用git log <options> BASE..TARGET
显示一系列提交。
根据我以前的经验和理解,这样做是什么:
有时我想实现以下目标:
[典型的用例是查找位于给定功能分支的(=祖先),但既不在master(=祖先)也不在特定其他功能分支中的提交。
显然,范围A..B语法在这里不会删减。相反,将需要有一个像--exclude-ancestors-of=A_0,A_1,A_2
这样的参数,并且其语法允许多个引用。
这有可能吗?
git log TARGET ^BASE_0 ^BASE_1 ^BASE_2
(这些可以以任何顺序进行)。如果您有很多否定引用(上面的^BASE_number
表达式是否定引用),则可以使用以下方法简化输入:
git log TARGET --not BASE_0 BASE_1 BASE_2
[第二个--not
告诉Git所有随后的说明符都将被否定。
--not
会否定该否定,回到正引用,所以您可以-对于本示例而言,毫无意义的是-编写:git log --not BASE_0 BASE_1 BASE_2 --not TARGET
也是。
有
许多
种方式在Git中表达修订和修订范围;有关合理完整的列表,请参见the gitrevisions documentation(或git help revisions
)。注意,尽管在两个命令中,两点和三点语法可能具有不同的含义。 git diff
命令是最重要的示例。请查阅每个特定的Git命令的手册页,以查看该命令是否对该命令有特殊含义,如果有,则意味着什么。