cat /tmp/commit_list | { while read old_commit ; do msg="`git log --pretty=oneline $old_commit'^'..$old_commit | sed 's/[0-9a-f]* //' | sed 's/[^A-Za-z0-9]/./g'`"; git log --pretty=oneline HEAD@'{100}'..HEAD | grep "$msg" ; done ; }
Данная команда используется для поиска коммитов Git на основе их описания. Она выполняет следующие действия:
1. Читает содержимое файла /tmp/commit_list.
2. В цикле, для каждого коммита в файле, выполняются следующие действия:
— Получает описание коммита с помощью git log и сохраняет его в переменную msg.
— Форматирует описание коммита, удаляя хэш коммита и заменяя непечатаемые символы на точки.
— Выполняет поиск совпадений описания коммита с помощью git log и grep для всех коммитов от HEAD@'{100}’ до HEAD.
Эта команда может быть полезна, когда нужно быстро найти коммиты по заданному описанию. Альтернативой может быть использование графического Git-клиента или Git-сервиса, позволяющего выполнить аналогичный поиск.
Аргументы, передаваемые команде:
— /tmp/commit_list: путь к файлу, в котором содержатся коммиты Git.
— old_commit: переменная, которая хранит значение каждого коммита, считанного из файла /tmp/commit_list.
— $old_commit'^'..$old_commit: диапазон коммитов от предыдущего коммита до текущего коммита.
