Получить список коммитов между тегами в git

#git

#git

Вопрос:

Если у меня есть репозиторий git с тегами, представляющими версии релизов.

Как я могу получить список коммитов между двумя тегами (с красивым форматом, если это возможно)?

Ответ №1:

git log --pretty=oneline tagA...tagB (т.е. три точки)

Если вы просто хотели, чтобы коммиты были доступны из tagB, но не из tagA:

git log --pretty=oneline tagA..tagB (т.е. две точки)

или

git log --pretty=oneline ^tagA tagB

Ответ №2:

Для сравнения последней фиксации текущей ветви и тега:

 git log --pretty=oneline HEAD...tag
  

Ответ №3:

git log принимает диапазон коммитов в качестве аргумента:

 git log --pretty=[your_choice] tag1..tag2
  

Смотрите справочную страницу для git rev-parse получения дополнительной информации.

Ответ №4:

Чтобы оформить выходные данные в предпочитаемый вами красивый формат, смотрите справочную страницу для git-log .

Пример:

 git log --pretty=format:"%h; author: %cn; date: %ci; subject:%s" tagA...tagB
  

Ответ №5:

К вашему СВЕДЕНИЮ:

 git log tagA...tagB
  

предоставляет стандартный вывод журнала в диапазоне.

Ответ №6:

Рассмотрите также это:

 git range-diff tagA...tagB
  

Источник: https://git-scm.com/docs/git-range-diff

Ответ №7:

Если ваша команда использует описательные сообщения о фиксации (например, «Ticket # 12345 — Update dependencies») в этом проекте, то создание журнала изменений, поскольку последний тег может быть выполнен следующим образом:

 git log --no-merges --pretty=format:"%s" 'old-tag^'...new-tag > /path/to/changelog.md
  
  • --no-merges исключает коммиты слияния из списка
  • old-tag^ ссылается на предыдущий коммит, более ранний, чем помеченный. Полезно, если вы по какой-либо причине хотите видеть помеченный коммит внизу списка. (Одинарные кавычки нужны только для iTerm в mac OS).