2013-04-12 3 views
0

У меня есть список 100+ идентификаторов фиксации. Я хотел бы git log все мое репо, но мне нужно исключить эти упомянутые коммиты.git log исключая 100+ совершает

Я знаю, есть git log --grep=something, но я не могу представить, как эта команда будет выглядеть со 100+ элементами. Есть ли более простой способ достичь этого?

+0

Есть ли что-нибудь с этими фиксаций? Например. все ли они один за другим? Или они просто случайные коммиты из репозитория? И зачем вам их все равно исключать? –

+0

Они вишневидные в другую ветку. Но старайтесь использовать команду 'git log -cherry-pick' или' git-cherry'. Проблема в том, что я не уверен, что все это совершает вишня. Но я уверен в моем журнале изменений, где перечислены эти коммиты. – Kasyx

+0

@ Kasyx Но вы все еще хотите формат журнала по умолчанию? Я думаю, вы должны переопределить пейджер: GIT_PAGER = 'foo | меньше 'git log. foo - команда сбросить коммиты в списке. Это может быть программа sed или awk. – basin

ответ

2

grep имеет подходящие варианты для вас. От человека странице Grep:

-f FILE, --file=FILE
Получить образцы из ФАЙЛА, по одному в каждой строке. Пустой файл содержит нулевые шаблоны и, следовательно, ничего не соответствует. (-f указан POSIX.)

-v, --invert-match
Инвертировать чувство соответствия, чтобы выбрать не соответствующие линии. (-v задается POSIX.)

Таким образом, вы можете просто сделать:

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

Звучит неплохо, спасибо! – Kasyx

+0

Не знаю о флагом -f – basin

+0

@ basin, я тоже. Я просто искал вопрос OP, наткнулся на решение в Интернете, перекрестился с man-страницей и написал его здесь;) – Shahbaz

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 
+0

Его хорошая идея, спасибо! – Kasyx

Смежные вопросы