Son etiketten bu yana tüm git kayıtlarını al


127

Bir kaydetmeyi etiketleyeceğim zaman, etiketlenen son kaydetmeden bu yana neyin değiştiğini bilmem gerekiyor. Örneğin:

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

Bu örnekte, en yeni 3 commit hakkında bilgi edinmek istiyorum veya yukarıdaki gibi, eğer varsa her ikisinin de etiketlerini kaydettiğini gösteren bir günlük yazdırabilmek istiyorum. Ve yeni bir özellik eklendiğini gördüğümde, onu v1.5.0 olarak etiketledim.

Nasıl anlaştın onunla birlikte? Etiketleri böyle mi kullanmam gerekiyor? Etiket mesajına ne yazmalıyım? Ben her zaman boş bırakırım:git tag -a v1.2.3 -m ''

Yanıtlar:


225

git log <yourlasttag>..HEAD ?

Bunları örneğinizdeki gibi commit id + message ile tek satırda istiyorsanız, o zaman

git log <yourlasttag>..HEAD --oneline

ve en son etiketinizi bilmiyorsanız veya bunun dinamik olmasını istiyorsanız, pencerelerde

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

ve linux / git bash / windows bash üzerinde

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

Ayrıca, geçmişte bir etiketi bildiğiniz bir durumunuz varsa ve bu etiketten mevcut duruma kadar her şeyi yazdırmak istiyorsanız --decorate, aradaki herhangi bir etiketi yazdırmak için de eklemek isteyebilirsiniz .


Bunun birleştirme taahhütlerini atlamasının bir yolu var mı?
Holloway

@Trengot bilmiyor, buna bakmadım. IMO birleştirme taahhütleri zaten kaçınılması gereken bir şey, mümkün olduğunda bunun yerine yeniden ayarlamayı kullanıyorum.
eis

Linux sürümü, Windows Bash için
Git'te

<yourlasttag>+ 1 olması gerekmez mi?
Raffi Khatchadourian

@RaffiKhatchadourian eğer bunu yaparsan, commit <yourlasttag>+ 1'de yapılan değişiklikleri kaçırırsın ve sadece ondan sonra değişiklikleri alırsın
eis

40

Mevcut kaydetmeniz de bir etiketse ve en son etiketi veya önceki etiket adını bilmeden önceki etiketten bu yana yapılan değişiklikleri dinamik olarak almak istiyorsanız, şunları yapabilirsiniz:

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

Bunun @kısa olduğunu unutmayın HEAD.


güzel !, sadece işlem metninin --oneline olarak --pretty = format: "% s" olarak değiştirilmesini istiyorsanız: git log --pretty = format: "% s" $ (git define --tags --abbrev = 0 @ ^) .. @
JBarbosa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.