git log不包括100多个提交

时间:2013-04-12 12:31:57

标签: git

我有100多个提交ID列表。 我想git log我的整个回购,但我需要排除这些提到的提交。

我知道,有git log --grep=something但是我无法想象这个命令在100多个元素中的表现如何。有没有更简单的方法来实现它?

2 个答案:

答案 0 :(得分:2)

grep有适合您的选项。从grep:

的手册页
  

-f FILE, --file=FILE
  从FILE获取模式,每行一个。空文件包含零模式,因此不匹配任何内容。 (-f由POSIX指定。)

     

-v, --invert-match
  反转匹配感,选择不匹配的线条。 (-v由POSIX指定。)

所以你可以这样做:

git log --pretty=oneline | grep -v -f list_to_exclude

答案 1 :(得分:1)

假设您有日志格式格式:

--pretty="%H [%ad] - %s"

和文件exclude.lst中的提交列表,每行在新行上提交;
然后要排除这些提交,请使用:

# generate the sed program to exclude
while read c; do
    echo "/^$c /D"
done > /tmp/exclude.sed < exclude.lst

# filter out
git log --pretty="%H [%ad] - %s" | sed -f /tmp/exclude.sed