Подтвердить что ты не робот

Как получить все фиксации с последнего тега?

Когда я собираюсь пометить commit *, мне нужно знать, что изменилось с момента последнего помеченного фиксации. Например:

a87a6sdf87a6d4 Some new feature
a87a6sdf87a6d3 Some bug fix
a87a6sdf87a6d2 Some comments added
a87a6sdf87a6d1 Some merge <- v1.4.0

В этом примере я хотел бы узнать о 3 последних коммитах или иметь возможность печатать журнал, как показано выше, который показывает, что оба фиксируют свои теги, если они есть. И когда я вижу, появилась новая функция, я бы пометил ее v1.5.0.

Как вы справляетесь с этим? Это как я должен использовать теги? Что я должен писать в сообщении тега? Я всегда оставляю пусто: git tag -a v1.2.3 -m ''

* это слово? Как насчет набора изменений? Я видел это в mercurial

4b9b3361

Ответ 1

git log <yourlasttag>..HEAD?

Если вы хотите, чтобы они были в вашем примере, в одной строке с сообщением commit id +,

git log <yourlasttag>..HEAD --oneline

и в случае, если вы не знаете свой последний тег или хотите, чтобы он был динамическим, в окнах, которые вы могли бы сделать

for /f "delims=" %a in ('git describe --tags --abbrev^=0') do @set latesttag=%a
git log %latesttag%..HEAD --oneline

и на linux

git log `git describe --tags --abbrev=0`..HEAD --oneline

Кроме того, если у вас есть случай, когда вы знаете тег в истории и хотите распечатать все из этого тега до текущей ситуации, вы можете добавить также --decorate, чтобы он распечатывал любые теги между ними.

Ответ 2

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

git log `git describe --tags --abbrev=0 HEAD^`..HEAD --oneline