Ответ 1
git log обычно является командой, используемой при анализе истории фиксации. git log --grep
может использоваться для поиска регулярных выражений в сообщении фиксации.
То, что вам нужно, это git log -S
, который просто ищет текст коммита или git log -G
, который ищет его с регулярным выражением:
-S Ищите различия, которые вводят или удаляют экземпляр. Обратите внимание, что это отличается от строки, просто появляющейся на выходе diff; см. запись кирка в gitdiffcore (7) для более подробной информации.
Итак, например, в репозитории msysGit я могу найти коммит, который ввел Tcl 8.5.8, используя либо:
C:\src\msysgit\src>git log --oneline --grep "8\.5\.8"
d938476 Make `NO_SFX=1 portable-release.sh` work
ef1dc94 Update tk to version 8.5.8
a910049 Update tcl to version 8.5.8
a702d7f tcltk: update to 8.5.8 and exclude release.sh from the cleanup list
который просто искал 8.5.8 в сообщениях фиксации или как вы хотите смотреть на строку, которая произошла только в переданном diff:
C:\src\msysgit\src>git log --oneline -S"version=8.5.8"
7be8622 tcltk: update release.sh script for tcl/tk 8.5.9
a702d7f tcltk: update to 8.5.8 and exclude release.sh from the cleanup list
Ограничение диапазона, которое вы имеете в своем примере, все еще может использоваться здесь для ограничения проверяемых коммитов. Внимательно прочитайте руководство журнала git, чтобы получить представление о том, что он может сделать.
Обратите внимание, что -S
просто ищет простые различия в строках - если вы действительно хотите искать контент, используя регулярное выражение, подобное вашему примеру, тогда вы должны использовать опцию -G
вместо -S
, но это будет значительно медленнее.