Там какой-либо путь состоит в том, чтобы получить SHA фиксации из ее сообщения?

При выполнении a git tag, Я не всегда силен в запоминании, если HEAD~6 (например), является содержащим или эксклюзивным.

Учитывая, что большинство моих фиксаций снабжается префиксом номер выпуска, я задался вопросом, существует ли некоторая волшебная команда для поиска фиксации SHA от части его сообщения.

Я знаю, что легко сделать a git log и работа оттуда, но я хочу более легкий :)

РЕДАКТИРОВАНИЕ: Кто-то также задал противоположный вопрос: В Мерзавце, там способ получить “дружественное” название произвольной фиксации?

12
задан Community 23 May 2017 в 12:32
поделиться

3 ответа

Вы можете использовать синтаксис : / blah , чтобы указать фиксацию, сообщение фиксации которой начинается с данного текста.

Например.

git show ":/Issue #299"

Это действительно везде, где можно использовать фиксацию. Например.

git cherry-pick ":/Issue #299"

Если вам действительно нужен SHA-1 коммита, вы можете просто использовать rev-parse.

git rev-parse ":/Issue #299"

См. Раздел «УКАЗАНИЕ ИЗМЕНЕНИЙ» на странице руководства git rev-parse :

Двоеточие, за которым следует косая черта, за которым следует текст :
Это имя фиксации, сообщение о фиксации которой начинается с указанного текста.
Это имя возвращает самую молодую совпадающую фиксацию, доступную по любой ссылке.
Если сообщение фиксации начинается с ! , вы должны это повторить; специальная последовательность : /! , за которым следует что-то еще, кроме ! пока зарезервирован.

18
ответ дан 2 December 2019 в 05:39
поделиться

Try

git rev-list --grep='message excerpt' HEAD

Это список только тех коммитов, которые являются предками HEAD . Если вы хотите найти все коммиты в репозитории (включая те, которые не являются предками HEAD ), я не знаю, как это сделать, кроме как вручную просмотреть все главы веток вручную и запустить это команда. (Возможно, есть способ, просто не знаю, что это может быть)

1
ответ дан 2 December 2019 в 05:39
поделиться
git log --grep=word

должны помочь найти соответствующий коммит.
(в отличие от поиска commit contents , где более уместны git log -S (опция кирки) или git grep )

Добавить различные параметры формата, такие как

git log --grep=word --pretty=oneline
git log --grep=word --pretty=format:"%h"

(последний отображает только SHA1), и все готово.


См. Также « Удовольствие с git log --grep »

git log --grep=frotz --grep=nitfol --since=1.month

Это обнаруживает коммиты, которые произошли в течение последнего месяца и упоминают frotz или nitfol в их сообщениях журнала коммитов.
Как и в случае с обычным «git grep», указание нескольких шаблонов означает «то или иное».

В статье указывается, что git grep ориентирован на строку, и в этой команде git log --grep используется параметр --all-match.

То, как семейство " git log " использует механизм grep как раз для того, "есть ли совпадение во всем этом?" аспект, а не аспект «покажи мне строки, соответствующие этим критериям». Он позволяет вам использовать этот механизм следующим образом:

git log --all-match --grep=frotz --author=Linus

Это покажет коммиты, в которых упоминается frotz и написанные Линусом.

8
ответ дан 2 December 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: