Git checkout commit с определенным трейлером

У меня есть ветка-сирота (назовем ее выходной), которая содержит документы, сгенерированные шаблонами, хранящимися в моей основной ветке. Я хотел бы проверить коммит на выходе, который соответствует конкретному коммиту на main.

Я решил использовать git commit --trailer 'Source: xxxxx' при фиксации на выходе, где xxxxx — это соответствующая фиксация на main.

Можно ли проверить коммит на выходе, зная только значение его трейлера?

«сиротская ветвь» — не очень четко определенный термин в Git; Я предполагаю здесь (как, я думаю, и доктор философии в своем ответе), что вы имеете в виду «ветвь без общей истории». (ElpieKay не совершала такого же скачка.)

torek 02.12.2022 21:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
170
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Чтобы найти значение sha1 коммита с трейлером Source: xxxxx,

git log --pretty=%H --grep='Source: xxxxx'

Чтобы проверить фиксацию за один шаг,

git checkout $(git log --pretty=%H --grep='Source: xxxxx')
git show ':/Source: xxxxx'

Смотрите документы на :/ в git help revisions.

Если я правильно понимаю, это всегда будет возвращать только один коммит, верно?

ITChap 02.12.2022 14:15

@ITChap Да. В документах четко сказано: «Это имя возвращает самую молодую совпадающую фиксацию…»

phd 02.12.2022 14:26
Ответ принят как подходящий

Чтобы обязательно сопоставить фиксацию с трейлером (а не только с сообщением о коммите, тема которого включает Source: xxxxx), вы можете использовать формат «%(trailers[:options])».
И используйте git switch (не оформить заказ) или git show, чтобы просто просмотреть содержимое (без изменения текущего рабочего дерева)

git switch \
$(git log --pretty=format:"%H% (trailers:key=Source,valueonly)"|grep Junio|head -1|cut -d " " -f1)

Кажется, это дает больше гарантий, чем ответ @phd. Просто чтобы подтвердить, что произойдет, если случайно git log вернет более одного коммита?

ITChap 05.12.2022 13:41

@ITChap Часть head -1 выберет первую (которая будет самой последней)

VonC 05.12.2022 13:44

Другие вопросы по теме