Pertanyaan Dapatkan semua git commit sejak tag terakhir


Ketika saya akan menandai commit *, saya perlu tahu apa yang berubah sejak commit yang terakhir ditandai. Misalnya:

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

Dalam contoh ini saya ingin tahu tentang 3 komit terbaru, atau dapat mencetak log seperti di atas, yang menunjukkan keduanya melakukan tag mereka jika ada. Dan ketika saya melihat ada fitur baru yang ditambahkan, saya akan memberi tag v1.5.0.

Bagaimana Anda menangani ini? Apakah ini cara saya menggunakan tag? Apa yang harus saya tulis dalam pesan tag? Saya selalu membiarkannya kosong: git tag -a v1.2.3 -m ''


75
2017-08-22 23:53


asal


Jawaban:


git log <yourlasttag>..HEAD ?

Jika Anda ingin mereka seperti dalam contoh Anda, pada satu baris dengan pesan id + komit, lalu

git log <yourlasttag>..HEAD --oneline

dan jika Anda tidak tahu tag terbaru Anda atau ingin ini menjadi dinamis, pada windows Anda bisa melakukannya

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

dan di linux

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

Juga, jika Anda memiliki kasus di mana Anda tahu tag dalam sejarah dan ingin mencetak semuanya dari tag itu hingga situasi saat ini, Anda mungkin ingin menambahkan juga --decorate jadi itu akan mencetak tag di antaranya.


146
2017-08-22 23:59



Jika commit Anda saat ini juga merupakan tag dan Anda ingin mendapatkan perubahan secara dinamis sejak tag sebelumnya, tanpa mengetahui tag terbaru atau nama tag sebelumnya, Anda dapat melakukan:

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

Perhatikan itu @ adalah kependekan dari HEAD.


22
2017-07-30 09:17