Как определить целевой коммит коммита git fixup? - PullRequest
0 голосов
/ 03 октября 2019

После создания фиксационных git коммитов есть ли способ показать или cat-файл или что-то в коммите и выяснить его целевой коммит? В частности, я не хочу угадывать и проверять все время с помощью rebase -i, чтобы выяснить, что моя цель по перебазированию достаточно далеко вернулась в историю.

1 Ответ

2 голосов
/ 03 октября 2019

Полагаю, вы имеете в виду коммит, сгенерированный с помощью git commit --fixup.

Git использует первую строку сообщения коммита фиксации исправления, которое выглядит примерно так:

fixup! Remove some foos from bars

Чтобы найти этот коммит, вы можете использовать тот же метод, который будет использовать сам Git: он ищет , чтобы Git мог искать в истории, пока не найдет коммит, начинающийся с текста после токена fixup!. Волшебная команда:

git show 'HEAD^{/Remove some foos}'

Будет выполнен поиск в начале, начиная с HEAD, и будет показан первый коммит, соответствующий тексту в фигурных скобках (без /, который является инструкцией для поиска последующий текст ).


РЕДАКТИРОВАТЬ: Я был очень смущен, когда я тестировал вещи в Windows CMD (в частности, его обработка ^). Как указывает @torek в комментариях, синтаксис ^{/xyz} сопоставляет заданное регулярное выражение со всем сообщением фиксации. Поэтому необходимо закрепить регулярное выражение в начале текста. Правильная команда:

git show 'HEAD^{/^Remove some foos}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...