Git günlüğü yalnızca ilk satırla nasıl çıkarılır?


330

Biçimini özelleştirmeye çalışıyorum git log. Tüm taahhütlerin tek bir satırda gösterilmesini istiyorum. Her satır, tamamlama mesajının yalnızca ilk satırını göstermelidir.
Ben öğrendim o git log --pretty=shorthile yapmak gerekir ama benim bilgisayarda tam günlüğünü gösteren git log(zaman damgası yanı sıra) yapar.

Ayrıca, yer tutucuları man sayfasında tanımlandığı şekilde kullanmaya çalıştım . Yine de, günlük iletisini kısaltmak için bir komut bulamadım. git log --pretty=format:'%h : %s'Kısa satırdaki karma %hve tam mesajı %sbir satırda gösteren bu satırı denedim .

git version 1.7.3.1.msysgit.0Vista'da kullanıyorum .


Belki de taahhüt mesajlarımı yazma şeklim ile ilgisi vardır. İşte bir örnek:

Added some functionality.
+ Added print function in Foo class.
+ Added conversion from foo to baz.

Bu nedenle, verilen örnekle, yalnızca kısa Added some functionality.özet karmasının önüne çıktı almak istiyorum .


1
%stam mesaj değil öznedir.
Josh Lee

Gerçekten ne istediğini söylemek gerçekten zor. shortBiçimi değildir (sürpriz!) Olsa da, hepsi tek bir satırda onelineolduğunu. İstediğiniz onelineve %h : %sdeğilse, onlarla ilgili sorun nedir? Özellikle, %staahhüt mesajının ilk satırı olan öznedir. Bu gerçekten kısaltılmış bir versiyon olmalı. İleti için tek bir uzun satırla taahhütte bulunup kelime kaydırma ile bir şekilde görüntülemeniz mümkün mü?
Cascabel

Tamamen anlıyorsun. Sorun olduğunu onelineve %sbilgisayarımda hiç olmazsa, biz beklediğiniz çıkışı yok. Gönderiyi bir taahhüt mesajı örneğiyle güncelledim. Belki yardımcı olur.
JJD

Yanıtlar:


544

Bunu denedin mi?

git log --pretty=oneline --abbrev-commit

Sorun muhtemelen ilk satırdan sonra boş bir satır eksik olmasıdır. Yukarıdaki komut genellikle benim için çalışıyor, ancak boş ikinci satır olmadan bir taahhüdü test ettim. Seninle aynı sonucu aldım: mesajın tamamı tek bir satırda.

Boş ikinci satır git komut mesajlarında standarttır. Gördüğünüz davranış muhtemelen bilerek uygulanmıştır.

Bir taahhüt mesajının ilk satırı kısa bir açıklamadır. Tek bir satırda yapamazsanız, birkaç satır kullanabilirsiniz, ancak git ilk boş satırdan önceki her şeyi "kısa açıklama" olarak kabul eder. onelinekısa açıklamanın tamamını yazdırır, böylece tüm 3 satırınız.


Teşekkürler! Gizemi çözdün: Konu mesajımdaki ilk satırdan sonra konuyu diğerlerinden ayırmak için boş bir satırım yok. Yine de, içine koymak veya dışarıda bırakmak özgür olsaydım iyi olurdu.
JJD

1
Sorun değil. Aslında, boş çizgiye sahip olup olmamakta özgürsünüz. Sadece mesajınızı dışarıda bırakırsanız kısa mesaj haline gelir. Bu kısa açıklamayı / ayrıntılı açıklamayı beğendim ve kısa açıklama için bir satırla sınırlı olmanın bir sorun olduğunu, dolayısıyla boş satır gereksinimini varsayalım. Her zaman git logbir filtreleme komut dosyası çıktı boru olabilir , ama gerçekten boş bir çizgi ile kısa bir açıklama yazmayı savunurdum.
Gauthier

89
Ayrıca git log --oneline --oneline, birlikte kullanılan "--pretty = oneline --abbrev-commit" için yerleşik bir stenondur.
Jeremy Logan

nasıl önceden kısaltılmış hashtag kurtulmak? Biraz dolusu hoş değil. Ama olmadan cut. Bu awkkoğuş olur ... (BTW math S: depolama düzeyinde düzgün kodlanmış bir huffman dizisindeki bir sonraki bitin açık veya kapalı olması
ihtimali

7
işte bu tx. Ben doğal olarak eklenen bu yüzden Ah, ayrıca, I, s dolu bir sayfa var %için '%s'. C-'dir;
Phlip

158

Ne git log --onelineistiyorsun?


1
Tüm taahhüt mesajının tek bir satırda birleştirilmesini istemiyorum. Her taahhüt mesajının ilk satırını görmek istiyorum.
JJD

41

Bir takma ad oluşturarak daha iyi ve daha kolay git günlüğü . Aşağıdaki kodu bir oturum için yalnızca bir kez terminale yapıştırın. Kalıcı olması için kodu zshrc veya bash profiline yapıştırın.

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

Çıktı

git lg

Çıktı değiştirilen satırlar

git lg -p

Alternatif olarak (önerilir)
Bu kodu genel .gitconfig dosyasına yapıştırın

[alias]
  lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

Daha fazla okuma.
https://coderwall.com/p/euwpig/a-better-git-log
Gelişmiş Okuma.
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/


Örnek, güzel biçimli güzel bir
demodur

diğerlerine dikkat edin, bu komutu toplu olarak koyarsanız,% yerine %%, yerine '"yerine" "yazın. sonuç = git log --color --graph --pretty=format:"%%Cred%%h%%Creset -%%C(yellow)%%d%%Creset %%s %%Cgreen(%%cr) %%C(bold blue)<%%an>%%Creset" --abbrev-commit %1. Değişen çizgileri almak için -p'yi bu yarasa dosyasına da geçirebilirsiniz
Dheeraj Bhaskar


25

Kısa bir günlüğü daha rahat bir şekilde çağırabilmeniz için genel bir takma ad tanımlayabilirsiniz:

git config --global alias.slog "log --pretty=oneline --abbrev-commit"

Sonra kullanarak çağırabilirsiniz git slog(etkinleştirdiyseniz otomatik tamamlama ile bile çalışır).



-8

her zaman git logbu şekilde kullanmak istiyorsanız git takma adını

git config --global alias.log log --oneline

bundan sonra git lognormalde basılacaklarıgit log --oneline


12
Bu gerçekten işe yaramaz, çünkü (A. git diğer adları yerleşik komut adlarını geçersiz kılamaz) ve (B. Etrafında tırnak işareti olması gerekir "log --oneline").
Max Nanasy
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.