git'e ilk 10'u gir


93

İki soru:

  1. Git'teki ilk 10 commit baştan sona nasıl gösterilir. (şube yok)
  2. Kaydetme indeksini nasıl belirtir ve günlüğe kaydeder. (ikinci veya üçüncüyü gösterin)

Git'in commit'i bağlamak için parent kullandığını biliyorum, commit'i baştan sona kaydetmek kolay. sevmek:git log HEAD~10

Ama baştan sona sorgulamam gerekiyor, bu mümkün mü?



@kostix cevabına ilerleyin
Muhammad Umer

Yanıtlar:


60

Her şeyi tek bir satır biçiminde kaydedin ve çıktıyı düzenleyin:

git log  --pretty=oneline | tail -n 10 

Harika! Aradığım bu. Tks @CharlesB.
yohan zhou

3
Veya, git rev-list HEAD | tail -n 10daha sonra istediğiniz formatta gösterebileceğiniz 10 kimliği listelemek için kullanın (tek satırlık yöntemle sınırlı değildir).
torek

17
tailgit konsoluma aldığım güzel rengi kaybediyor gibi görünüyor. git log --oneline -10Diğer cevaptaki gibi bir parametre geçirmek beklediğim gibi çalışıyor.
James Hulse

4
Bu kesinlikle zor çekirdekli Unix tarzı, lol. Lütfen @kostix cevabına bakın.
9301293

1
Bu yöntemin dezavantajı, yalnızca itilmiş taahhütlerimi görebilmem.
Jack

257
git log -10

Revizyon spesifikasyonuna uyan en son 10 kaydı gösterir (eksik spesifikasyon "tüm taahhütler" anlamına gelir).

Kılavuz sayfasına bakın:

git help log

Bölüm Commit Limiting

-<number>, -n <number>, --max-count=<number>
    Limit the number of commits to output.

6
basittir ve tailplatformunuzda kullanılabilir olmaya bağlı değildir .
tenpn

8
& git biçimlendirme / renklendirme ile uğraşmaz. Kabul edilen cevap bu olmalı x100
kuzyn

10
Operasyonun istediği şey değil: first10'u istiyordu latest,.
Timo

1
@Timo, büyük olasılıkla evet, ancak belirtildiği gibi soru yoruma açık ve çoğu kişi, sırf bu açık farklılıklar nedeniyle cevabımı yükseltiyor gibi görünüyor. O yüzden teknik olarak sizinle aynı fikirde olsam da, bunu olduğu gibi tutalım, sanırım ;-) Teknik olarak doğru öneriler arasında, Torkun kabul edilen cevaba yaptığı yorumu en çok beğeniyorum.
kostix

@kostix "Git'te baştan sona ilk 10 commit nasıl gösterilir" bana göre "yoruma açık" değil. Açıkça görülüyor ki en son değil, ilk 10 kaydı istiyor .
Bobby Jack

30

İşte benim yaklaşımım

İlk 10 kaydı almak için:

git log -n 10

-n sayıdır

Ek Sonraki 10 kaydı almak için ilk 10'u atlayın:

git log --skip=10 -n 10

Bence bu kabul edilen cevap olmalı. Kuyruk kullanmak --graph'ın git
log'da

Bu kabul edilen cevap olmalı. benim için bir cazibe gibi çalışıyor
Doogle

kuyruk kullanarak konsolda yazı tipi rengini de kaybedersiniz. doğru cevap bu
CESCO

14

Son 10 kaydı almak için:

git log HEAD~10..HEAD

Bunları en eskiden en yeniye sıralamak için:

git log --reverse HEAD~10..HEAD

Birleştirme varsa, bunun 10'dan fazla kaydetmeyi gösterebileceğini unutmayın; --first-parenther bir dalın yalnızca ilk ebeveyninden geçmek istiyorsanız ekleyin .

Daha fazla ayrıntı için belgelerine bakın git rev-list.


Düzenleme: Yukarıda "tarihin başlangıcına yakın olan taahhütleri göster" konusunda yararlı bir yanıt aldınız (yine, bir depodaki birden fazla bağlı olmayan kayıt DAG'ları hakkındaki uyarılara bakın). Ancak, örneğin şunları da yapabilirsiniz:

git log --no-walk `git rev-list HEAD | tail -n 10`

ve:

git log --no-walk `git rev-list --reverse HEAD | head -n 10`

sonuçları istediğiniz sıraya bağlı olarak.


Cevabınız için teşekkürler. Ama son 10 kayda ihtiyacım yok, ilki. Kesin olarak, kaydetme ABCDEFG (HEAD) ise. ABC nasıl kaydedilir ve dizin 2'ye göre C nasıl kaydedilir?
yohan zhou

Oh! Tek bir "ilk commit" olacağının garantisi yoktur, ancak varsa @CharlesB eklenmiş bağlantısına bakın.
torek

Yol iş olabilir. herhangi bir doğal yol? git log --pretty = oneline | wc -l git log HEAD ~ <Sayı eksi bir veya dizin>
yohan zhou

Cevap için teşekkürler. Git takma adlarımda '-10' stili seçeneklerinden kaçınmak için ihtiyacım olan şey buydu. sayı argümanlarını kabul eden.
vicTROLLA

11

en iyi sonuç, her iki en iyi cevabın kombinasyonuyla gelir:

git log --pretty=oneline -10

1
Teşekkürler, bunu terminalimi doldurmadan son taahhütleri hızlıca görüntülemek için git takma adı olarak kullanıyorum . Takma adı aradım lkj = log --pretty=oneline --abbrev-commit -10. Şimdi bunun OP'nin sorusuna cevap vermediğini anlıyorum ama buraya basit sayı anahtarını aramaya geldim.
Paul Rougieux

4

Basitçe her şeyi günlüğe kaydedin Ters -1, bir günlük listelemek demektir

git log  --reverse -1

3

aşağıdaki basit sözdizimi komutunu kullanırdım;

git log -10 --oneline

1
Bunun en etkili yol olduğunu düşünün!
Nishant

0

Çünkü ... daha fazla detay: p

  1. Git'teki ilk 10 commit baştan sona nasıl gösterilir. (şube yok)
  2. Kaydetme indeksini nasıl belirtir ve günlüğe kaydeder. (ikinci veya üçüncüyü gösterin)

(Dal yok) ile, reflogherhangi bir soy zincirinden ziyade soruyor olabilirsiniz . Aşağıdakilerin bulunduğunuz şubeyle hiçbir ilgisi yoktur.

git log -g --pretty=oneline | tail -10

<sha> HEAD@{###}: action: summary (old)
<sha> HEAD@{###}: action: summary (older)
...
<sha> HEAD@{###}: action: summary (oldest)
  • -golduğu --walk-reflogsYerine soy zincirini işlemek yürüyen, reflog entries.q yürümek
  • |cut -d ' ' -f 2|tr -d ':' > loggünlüğe yalnızca reflog commit indeksini ekleyin .

Aşağıdakiler, şu anda kontrol edilen şubenin en eski atalarını gösterecektir.

git log --reverse --pretty=oneline | head -10 | cat -n

1 <sha> summary (oldest)
2 <sha> summary (second)
  • --reverse İşlemleri ters sırada yazdırın.
  • Basitçe -n 10ya -10da kırıldığı için kullanamıyorum--reverse
  • cat -n satır numaraları ekler (kayıt indeksi?)


0

Birinin tek satırlık günlükten daha fazlasını istemesi durumunda:

git log --reverse | awk 'NR>1 {print last} {last=$0}; /^commit/ && ++c==11{exit}'

nerede 11sonunda ayarlanmalıdır 1istediğiniz kaydedilmesini sayısından daha fazla.

Gibi burada işaret git log --reverse -n 10iş değil sen olarak ihtiyaç. ( Sanırım size ilk 10 kaydı ters sırayla veya son 10 kaydetmeyi seçme olanağı vermek için değişmez olması gerekir 🤪)

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.