วิธีการส่งออกบันทึก git กับบรรทัดแรกเท่านั้น?


330

git logฉันพยายามที่จะปรับแต่งรูปแบบของ ฉันต้องการแสดงทั้งหมดมุ่งมั่นในบรรทัดเดียว แต่ละบรรทัดควรแสดงบรรทัดแรกของข้อความยืนยันเท่านั้น
ฉันพบว่าgit log --pretty=shortควรทำเคล็ดลับ แต่ในคอมพิวเตอร์ของฉันมันแสดงบันทึกเต็มเช่นเดียวกับgit log(นอกเหนือจากการประทับเวลา)

นอกจากนี้ผมพยายามที่จะใช้ตัวยึดตำแหน่งที่กำหนดไว้ในหน้าคน แม้ว่าฉันไม่สามารถหาคำสั่งเพื่อทำให้ข้อความบันทึกสั้นลง ฉันลองบรรทัดนี้git log --pretty=format:'%h : %s'ซึ่งแสดงแฮชแบบ shorted %hและข้อความเต็ม%sในหนึ่งบรรทัด

ฉันกำลังใช้งานgit version 1.7.3.1.msysgit.0บน Vista


บางทีมันอาจจะเกี่ยวข้องกับวิธีที่ฉันเขียนข้อความที่ส่งถึงฉัน นี่คือตัวอย่าง:

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

ดังนั้นด้วยตัวอย่างที่ให้มาฉันแค่อยากจะเอาท์พุทเสริมAdded some functionality.ด้วยแฮชของ Shortend


1
%sเป็นหัวเรื่องไม่ใช่ข้อความเต็ม
Josh Lee

เป็นการยากที่จะบอกว่าคุณต้องการอะไร shortรูปแบบไม่ได้ทั้งหมดในหนึ่งบรรทัดแม้ว่า (แปลก!) onelineเป็น หากonelineและ%h : %sไม่ใช่สิ่งที่คุณต้องการเกิดอะไรขึ้นกับพวกเขา โดยเฉพาะอย่างยิ่ง%sคือหัวเรื่องบรรทัดแรกของข้อความการส่งข้อความ นั่นควรเป็นเวอร์ชั่นย่อ เป็นไปได้ไหมที่คุณส่งข้อความยาวหนึ่งบรรทัดและดูข้อความด้วยการตัดคำ?
Cascabel

คุณเข้าใจโดยสิ้นเชิง ปัญหาคือว่าonelineและ%sอย่าส่งออกสิ่งที่เราคาดหวังอย่างน้อยในคอมพิวเตอร์ของฉัน ฉันอัพเดตโพสต์ของฉันด้วยตัวอย่างของข้อความยืนยัน อาจช่วยได้
JJD

คำตอบ:


544

คุณเคยลองสิ่งนี้หรือไม่?

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

ปัญหาอาจเป็นไปได้ว่าคุณไม่มีบรรทัดว่างหลังจากบรรทัดแรก คำสั่งข้างต้นมักใช้งานได้สำหรับฉัน แต่ฉันเพิ่งทดสอบการคอมมิทโดยไม่มีบรรทัดที่สองว่าง ฉันได้ผลลัพธ์เช่นเดียวกับคุณ: ข้อความทั้งหมดในหนึ่งบรรทัด

บรรทัดที่สองว่างเปล่าเป็นมาตรฐานในการคอมไพล์ข้อความ พฤติกรรมที่คุณเห็นอาจถูกนำไปใช้ตามวัตถุประสงค์

บรรทัดแรกของข้อความการส่งข้อมูลมีไว้เพื่อเป็นคำอธิบายสั้น ๆ หากคุณไม่สามารถทำได้ในบรรทัดเดียวคุณสามารถใช้หลาย ๆ อันได้ แต่ git จะพิจารณาทุกอย่างก่อนที่บรรทัดว่างแรกจะเป็น "คำอธิบายสั้น ๆ " onelineพิมพ์คำอธิบายสั้น ๆ ทั้งหมดดังนั้นแถวทั้ง 3 ของคุณ


ขอบคุณ! คุณไขปริศนา: ฉันไม่มีบรรทัดว่างหลังจากบรรทัดแรกในข้อความคอมมิทของฉันเพื่อแยกหัวเรื่องออกจากส่วนที่เหลือ อย่างไรก็ตามมันคงจะดีถ้าฉันมีอิสระที่จะใส่มันหรือปล่อยมันไว้
JJD

1
ไม่มีปัญหา. ในความเป็นจริงคุณมีอิสระที่จะมีบรรทัดว่างหรือไม่ เฉพาะที่ข้อความทั้งหมดของคุณกลายเป็นข้อความสั้น ๆ ถ้าคุณปล่อยให้มันออกไป ฉันชอบคำอธิบายสั้น ๆ / คำอธิบายโดยละเอียดและฉันคิดว่าการ จำกัด เพียงหนึ่งบรรทัดสำหรับคำอธิบายสั้น ๆ นั้นเป็นปัญหาดังนั้นความต้องการบรรทัดว่าง คุณสามารถส่งออกgit logไปยังสคริปต์การกรองได้เสมอ แต่ฉันอยากจะสนับสนุนให้เขียนคำอธิบายสั้น ๆ ด้วยบรรทัดว่าง
Gauthier

89
นอกจากนี้ยังมีgit log --oneline --oneline เป็นชวเลขในตัวสำหรับ "--pretty = oneline --abbrev-commit" ที่ใช้ร่วมกัน
Jeremy Logan

คุณจะกำจัดแฮชแท็กที่ย่อให้สั้นลงได้อย่างไร? ไม่ใช่ว่ามันไม่ได้สวยมากนัก cutแต่ไม่มี นั่นจะเป็นawkวอร์ด ... (BTW math Q: อัตราเดิมพันต่อไปในลำดับฮัฟแมนที่เข้ารหัสอย่างถูกต้องในระดับที่เก็บข้อมูลเปิดหรือปิดอยู่หรือไม่คำแนะนำ: มันคือ === 50%)
Phlip

7
นั่นคือ TX โอ้ยังผมได้หน้าเต็มของ s ดังนั้นผมตามธรรมชาติเพิ่มสำหรับ% '%s'ค-;
Phlip

158

ไม่git log --onelineทำในสิ่งที่คุณต้องการ?


1
ฉันไม่ต้องการให้ข้อความการส่งข้อความทั้งหมดถูกรวมเข้าในบรรทัดเดียว ฉันต้องการเห็นบรรทัดแรกของแต่ละข้อความที่ส่งมอบเท่านั้น
JJD

41

ที่ดีขึ้นและง่ายขึ้นเข้าสู่ระบบคอมไพล์โดยการนามแฝง วางรหัสด้านล่างเพื่อเทอร์มินัลเพียงครั้งเดียวสำหรับหนึ่งเซสชัน วางรหัสไปที่ zshrc หรือทุบตีโปรไฟล์เพื่อให้ทนทาน

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"

เอาท์พุต

git lg

เปลี่ยนบรรทัด เอาท์พุท

git lg -p

อีกวิธีหนึ่ง (แนะนำ)
วางรหัสนี้ลงในไฟล์. gitconfig แบบโกลบอล

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

อ่านเพิ่มเติม.
https://coderwall.com/p/euwpig/a-better-git-log
การอ่านขั้นสูง
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/


ตัวอย่างนี้เป็นตัวอย่างที่ดีของรูปแบบที่สวยงาม แต่ "วางโค้ดด้านล่างเพื่อเทอร์มินัลเพียงครั้งเดียว" ดูเหมือนผิดเพราะมันไม่ได้สร้างนามแฝงสำหรับ "git lg"
Drone2537

หมายเหตุถึงคนอื่น ๆ ถ้าคุณใส่คำสั่งนี้เป็นชุดให้แทนที่% ด้วย %% แทนที่ 'ด้วย "" ผลลัพธ์ = git log --color --graph --pretty=format:"%%Cred%%h%%Creset -%%C(yellow)%%d%%Creset %%s %%Cgreen(%%cr) %%C(bold blue)<%%an>%%Creset" --abbrev-commit %1. คุณสามารถส่ง -p ไปยังไฟล์ bat นี้เพื่อรับบรรทัดที่เปลี่ยนแปลงได้เช่นกัน
Dheeraj Bhaskar

30

สิ่งนี้จะพิมพ์เฉพาะข้อความ (หัวเรื่องเท่านั้น) โดยไม่ต้องใช้แฮช :

git log --pretty=format:%s

3
%sสำหรับเรื่อง; %bสำหรับร่างกาย; %Bสำหรับทั้งสอง ("ร่างกายดิบ" ในgit-scm.com/docs/pretty-formats )
Mathieu CAROFF

25

คุณสามารถกำหนดนามแฝงส่วนกลางเพื่อให้คุณสามารถเรียกใช้บันทึกย่อแบบสบาย ๆ :

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

จากนั้นคุณสามารถโทรหาได้โดยใช้git slog(มันใช้ได้กับการเติมข้อความอัตโนมัติหากคุณเปิดใช้งานไว้)



-8

หากคุณต้องการใช้git logในลักษณะดังกล่าวเสมอคุณสามารถเพิ่มชื่อแทนคอมไพล์ด้วย

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

หลังจากนั้นgit logจะพิมพ์สิ่งที่ปกติจะพิมพ์โดยgit log --oneline


12
สิ่งนี้ใช้งานไม่ได้เพราะ (นามแฝงก. git ไม่สามารถแทนที่ชื่อคำสั่งในตัว) และ (B. ต้องมีเครื่องหมายคำพูดอยู่รอบ ๆ"log --oneline")
Max Nanasy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.