ไม่สามารถแสดงแผนผัง Git ในเทอร์มินัล


439

บทความเก่าของ Killswitchcollective.com วันที่ 30 มิถุนายน 2009มีปัจจัยการผลิตและผลผลิตดังต่อไปนี้

git co master
git merge [your_branch]
git push

upstream    A-B-C-D-E            A-B-C-D-E-F-G
                 \        ---->               \
your branch       C-D-E                        G

ฉันสนใจว่าคุณจะได้รับแผนผังการดูคอมมิทในเทอร์มินัลของคุณอย่างไรโดยไม่ต้องใช้ Gitk หรือ Gitx ใน OS / X

คุณจะได้รับมุมมองที่เหมือนต้นไม้ของการกระทำใน terminal ได้อย่างไร?


2
มันไม่สำคัญสำหรับคำถาม แต่บทความในคำถามไม่สามารถใช้ได้อีกต่อไป สำเนาแคชสามารถใช้ได้ผ่านทาง Internet Archive: web.archive.org/web/20110831142839/http://…
Alan De Smet

คำตอบ:


795

คุณจะได้รับมุมมองที่เหมือนต้นไม้ของการกระทำใน terminal ได้อย่างไร?

git log --graph --oneline --all

เป็นการเริ่มต้นที่ดี

คุณอาจได้รับจดหมายแปลก ๆ มันเป็นรหัส ASCII สำหรับสีและโครงสร้าง ในการแก้ปัญหานี้ให้เพิ่มสิ่งต่อไปนี้ใน.bashrc:

export LESS="-R"

เช่นที่คุณไม่จำเป็นต้องใช้ตัวกรอง ASCII ของ Tig โดย

git log --graph --pretty=oneline --abbrev-commit | tig   // Masi needed this 

กราฟข้อความตามบทความจาก Git-readyมีตัวเลือกอื่น ๆ :

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

กราฟบันทึกการคอมไพล์

เกี่ยวกับบทความที่คุณพูดถึงฉันจะไปกับคำตอบของ Pod : ผลงานทำมือ


Jakub Narębskiกล่าวถึงในข้อคิดเห็น tigอินเทอร์เฟซโหมดข้อความที่ใช้ ncurses สำหรับ git ดูรุ่นของพวกเขา
มันเพิ่มตัวเลือกกลับในปี 2007--graph


1
ฉันเพิ่งทดสอบมันบน repo ของฉัน มันใช้งานได้ แต่ฉันอยู่บน Windows ด้วย MSysGit1.6.3
VonC

files.getdropbox.com ถูกบล็อกที่นี่ที่ทำงาน :( ฉันจะเห็นภาพของคุณในเวลาประมาณหนึ่งชั่วโมงถึงเวลาที่จะได้รับที่บ้าน.
VonC

@Vonc: ตอนนี้ฉันพิมพ์สองคำสั่งแรก ฉันได้รับมุมมองที่คล้ายกันในภาพสำหรับคำสั่งที่สอง
LéoLéopold Hertz 준영

9
นอกจากนี้ยังมี 'tig' อินเตอร์เฟซโหมดข้อความสำหรับ git (ใช้ ncurses) ซึ่งมีมุมมองประวัติกราฟิกในเทอร์มินัลก่อนที่จะมีตัวเลือก '--graph' เพื่อ git-log
Jakub Narębski

2
ฉันพบว่าสิ่ง--decorateที่ขาดไม่ได้ในจอแสดงผลประเภทนี้เช่นกัน - มันแสดงชื่อผู้อ้างอิง (สาขารีโมตและโลคัล) พร้อมกับชื่อคอมมิทที่ย่อ
Matt Enright

312

ทางออกคือการสร้างนามแฝงในของคุณ.gitconfigและเรียกมันได้อย่างง่ายดาย:

[alias]
    tree = log --graph --decorate --pretty=oneline --abbrev-commit

และเมื่อคุณเรียกใช้ครั้งต่อไปคุณจะใช้:

git tree

หากต้องการวางไว้ใน ~ / .gitconfig ของคุณโดยไม่ต้องแก้ไขคุณสามารถทำได้:

git config --global alias.tree "log --graph --decorate --pretty=oneline --abbrev-commit"  

(ถ้าคุณไม่ใช้ --global มันจะใส่ไว้ใน. git / config ของ repo ปัจจุบันของคุณ)


1
นี่ไม่ใช่นามแฝงเริ่มต้นอย่างไร ฉันเดาว่ามันจะทำให้ CLI ของ Git น้อยลงเล็กน้อยที่จะใช้และเราไม่มีมัน ...
Timmmm

123
git log --oneline --decorate --all --graph

ต้นไม้ภาพที่มีชื่อสาขารวม

ใช้สิ่งนี้เพื่อเพิ่มเป็นนามแฝง

git config --global alias.tree "log --oneline --decorate --all --graph"

คุณเรียกมันด้วย

git tree

ต้นไม้ Git


2
ดีมากอันนี้ ฉันใช้มันร่วมกับless -Sที่อธิบายไว้ที่นี่เพื่อป้องกันไม่ให้เส้นที่พันกันยุ่งเหยิงจากต้นไม้
djvg

60

tig

ถ้าคุณต้องการโต้ตอบtigต้นไม้คุณสามารถใช้ สามารถติดตั้งได้brewบน OSX และapt-getใน Linux

brew install tig
tig

นี่คือสิ่งที่คุณได้รับ:

ป้อนคำอธิบายรูปภาพที่นี่


คุณจะได้รับต้นไม้เช่นเดียวกับในคำตอบของ VonC โดย Tig ในปัจจุบัน? เราใช้ Tig ในคำตอบของ VonC เป็นตัวกรอง Ascii เท่านั้น
LéoLéopold Hertz 준영

4

การทำให้คำสั่งสั้น ๆ จะทำให้จดจำได้ง่ายขึ้น:

git log --graph --oneline

1

ฉันอยากจะแนะนำให้ทุกคนเขียนคำสั่งแบบเต็ม

git log --all --decorate --oneline --graph

แทนที่จะสร้างนามแฝง

เป็นการดีที่จะรับคำสั่งเข้ามาในหัวของคุณเพื่อให้คุณรู้ด้วยใจคือไม่พึ่งพานามแฝงเมื่อคุณเปลี่ยนเครื่อง


2
เป็นจริงgit log --all --decorate --oneline --graphหลังจากตัวช่วยจำgit log a dog;)
VonC

@VonC ผลลัพธ์สุดท้ายจะเหมือนกัน อย่างไรก็ตามฉันเห็นด้วยกับคุณ ขอบคุณสำหรับความคิดเห็น.
นักแซ็กโซโฟน

ใช่นั่นคือสิ่งที่รอยยิ้ม;)ในตอนท้ายของความคิดเห็นก่อนหน้าของฉันพยายาม (ไม่สมบูรณ์) เพื่อถ่ายทอด: คุณสามารถใช้ตัวเลือกเหล่านี้ตามลำดับที่คุณต้องการ ฉันเพิ่งพบ "log a dog" funny :)
VonC

1
หรือคุณสามารถทำได้scp ~/.bashrc root@remote:~/และนามแฝงของคุณจะเคลื่อนไหวอย่างรวดเร็วจริง ๆ
ดูแลระบบ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.