ฉันจะแสดงชื่อสาขาใน 'git log' ได้อย่างไร?


216

ฉันจะแสดงชื่อของสาขาในผลลัพธ์ของได้git logอย่างไร

ตัวอย่างเช่นgit log --graph --allฉันได้รับภาพรวมที่ดีของความมุ่งมั่น แต่สับสนว่าสายใดเป็นสายหลักและเป็นสาขาของฉันเช่นกัน


1
ใช้งานง่ายการแสดงชื่อของส่วนหัวหรือแท็กที่เชื่อมโยงนั้นปรากฏขึ้นให้ทำโดยค่าเริ่มต้นตั้งแต่การgitอัปเดตล่าสุดบางอย่าง
underscore_d

คำตอบ:


321

ลองตัวเลือกการตกแต่ง

git log --graph --all --decorate

มันจะใส่คำอธิบายประกอบที่ชี้ไปตามแท็กหรือสาขา


42
ด้วย--prettyคุณสามารถใช้%dสถานที่ที่คุณต้องการ 'ตกแต่ง'
CB Bailey

4
@noli: สิ่งที่คุณคาดหวังที่จะแสดง? ไม่ได้กระทำทั้งหมดเป็นเคล็ดลับสาขา
CB Bailey

9
@noli git เก็บเฉพาะชื่อสาขาที่กระทำล่าสุดของสาขา (เคล็ดลับ) ความมุ่งมั่นทั้งหมดในประวัติศาสตร์นั้นเท่ากันและไม่ระบุชื่อ หากคุณต้องการกิ่งที่มีชื่อเพื่อให้การกระทำทุกอย่างมีชื่อสาขาคุณสามารถใช้ Mercurial
Sampo Smolander

7
@CharlesBailey: ผมชอบสีของ refs git log --graph --all --oneline --decorateด้วย ฉันมีนามแฝงgit graphที่ใช้--pretty(เพื่อที่จะแสดงสิ่งอื่น ๆ เช่นกันในฐานะนักเขียนและวัน) แต่มีไม่ให้ฉันสีของ%d --decorateผมใช้สีเหลืองสำหรับ refs ทั้งหมดของฉันตอนนี้คุณจะรู้ว่าฉันสามารถปล่อยให้--pretty's %dสตริงสืบทอดสีของ--decorate?
Gauthier

3
@Gauthier หากคุณต้องการให้มีสีเริ่มต้นใน--prettyรูปแบบของคุณให้เพิ่ม%C(auto)องค์ประกอบที่ควรมีสีก่อนองค์ประกอบ เช่นgit log --pretty=format:"%cd %h %cn %s %C(auto)%d"
Radon8472

7

ฉันกำลังมองหาสิ่งที่คล้ายกับนี้ - แต่ต้องการทราบว่ามีการเปลี่ยนแปลงสาขาใด หวังว่าคำตอบนี้จะใช้กับคนอื่นด้วย

ฉันกำลังตรวจสอบความเสี่ยงด้วยblackboxการเข้ารหัสที่ repo และเป็นสาขา / แท็กอาจไม่พร้อมใช้งานในปัจจุบันadminsเมื่อผู้ใช้ออกจากโครงการเพียงพอและkeyringsไดเรกทอรีไม่ได้ยึดหลักจากศาสนาอย่างเคร่งครัด)

ฉันพบว่าคำตอบด้านล่างมีประโยชน์ในกรณีที่keyringsไม่มีการอัปเดตไดเรกทอรีจากต้นแบบ ...

โดยพื้นฐานแล้วการเพิ่ม--sourceคือสิ่งที่ฉันต้องการเพื่อแสดงกิ่ง / แท็ก การเพิ่ม--name-onlyจะแสดงว่าไฟล์ใดที่ถูกเปลี่ยนแปลงจริง

cd /path/to/repo-that-uses-blackbox-encryption
git log --graph --all --decorate --source --name-only keyrings

อีกคำตอบที่มีประโยชน์: วิธีการแสดงบันทึก git ด้วยชื่อสาขา


สำหรับฉัน--sourceคนเดียวให้HEADสำหรับความมุ่งมั่นทั้งหมด เมื่อใช้ร่วมกับ--allสิ่งนี้ดูเหมือนว่าจะแยกแยะระหว่างสาขาต่าง ๆ แต่ข้อมูลที่แสดงไม่ใช่สิ่งที่ฉันคาดหวัง: สำหรับความมุ่งมั่นที่ฉันทำmasterแทนที่จะได้รับrefs/heads/masterฉันจะได้สาขาส่วนตัว ( refs/remotes/origin/…) ฉันสงสัยว่าการรวมและ / หรือสาขาใหม่ทำให้Gitข้อมูลประวัติสูญหาย
vinc17

แทนที่จะเป็น--allฉันสามารถกรองสาขาด้วย--branches --remotes=<pattern>แต่ทันทีที่มีการรวมสาขาสองสาขาเข้าด้วยกัน Git จะไม่มีข้อมูลที่มีการกระทำเมื่อเสร็จสิ้นอีกต่อไป
vinc17

1

หากคุณบังเอิญใช้ oh-my-zsh เป็นเทอร์มินัลของคุณคุณสามารถใช้นามแฝง git จำนวนมากได้ ซึ่งทั้งหมดนี้สามารถมองเห็นที่ซื้อคืนของพวกเขาโอ้ฉัน-zsh / ปลั๊กอิน / คอมไพล์ หากคุณไม่ได้ใช้เทอร์มินัลนี้คุณก็สามารถคว้านามแฝงและวางสิ่งที่คุณต้องการในสภาพแวดล้อมของคุณเอง

คำตอบที่ยอมรับนำเสนอgit log --graph --all --decorateคำสั่งซึ่งมีให้เป็นglggaนามแฝงใน oh-my-zsh

ส่วนตัวฉันชอบglodsนามแฝงที่แปลเป็น:

git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.