我有100多个提交ID列表。
我想git log
我的整个回购,但我需要排除这些提到的提交。
我知道,有git log --grep=something
但是我无法想象这个命令在100多个元素中的表现如何。有没有更简单的方法来实现它?
答案 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