最後のタグ以降のすべてのgitコミットを取得する


126

コミットにタグを付けるときは、最後にタグが付けられたコミット以降に何が変更されたかを知る必要があります。例えば:

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 ''

回答:


224

git log <yourlasttag>..HEAD

あなたがあなたの例のようにそれらを望むなら、コミットID +メッセージのある1行で、そして次に

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 bash / windows bash

git log $(git describe --tags --abbrev=0)..HEAD --oneline

また、履歴内のタグを知っていて、そのタグから現在の状況まですべてを印刷したい場合は--decorate、その間にあるすべてのタグを印刷するように追加することもできます。


これがマージコミットをスキップする方法はありますか?
Holloway

@Trengotは知りません、まだ調べていません。IMOマージコミットはとにかく避けるべきものです。可能な限り、代わりにリベースを使用します。
e's

LinuxバージョンはGit for Windows Bashでも動作します
kwesolowski

<yourlasttag>+1にすべきではありませんか?
Raffi Khatchadourian、2017年

@RaffiKhatchadourianこれを行うと、コミット<yourlasttag>+ 1で行われた変更を逃し、その後は変更のみを取得します
eis

39

現在のコミットもタグであり、最新のタグや以前のタグ名を知らなくても、以前のタグ以降の変更を動的に取得したい場合は、次のようにします。

git log --oneline $(git describe --tags --abbrev=0 @^)..@

はの@略ですHEAD


いいですね、コミットテキストの変更が必要な場合--onelineを--pretty = format: "%s"に変更:git log --pretty = format: "%s" $(git describe --tags --abbrev = 0 @ ^).. @
JBarbosa
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.