git branch --list
รุ่นปัจจุบันส่วนใหญ่ใช้งานได้ แต่มันช้าและยุ่งยาก ในขณะที่สิ่งนี้สามารถแก้ไขได้อย่างง่ายดายใน Git เองแพตช์ทุกตัวที่พยายามปรับปรุงส่วนต่อประสานผู้ใช้นั้นถูกปฏิเสธโดยพฤตินัย
คำสั่งภายนอก git branch-list
คือการแก้ปัญหา
ทำไม git branch-list
ถึงดีกว่า?
git branch --list
สมมติว่าคุณมีสาขา master
ที่ติดตามสาขาระยะไกล แต่ก็ไม่ทันสมัยเสมอไป (เราจะใช้ที่เก็บของ Linux)
ในกรณีนี้ git branch
อย่างเป็นทางการจะแสดงสิ่งนี้:
* master
สิ่งนี้ไม่ได้ให้ข้อมูลมากนัก หากคุณใช้ตัวเลือก --verbose
คุณจะได้รับ:
* master 9f4ad9e425a1 [behind 16592] Linux 5.12
ตกลงเราอยู่ข้างหลังในปี 16592 Commits แต่เบื้องหลังอะไร? เราสามารถเดาได้จากชื่อเรื่องที่กระทำ แต่ก็ไม่ชัดเจนจริงๆ
ถ้าเราใช้ --verbose --verbose
เราจะได้รับ:
* master 9f4ad9e425a1 [origin/master: behind 16592] Linux 5.12
ในที่สุดเราก็มีข้อมูลที่เป็นประโยชน์ แต่ก็ต้องใช้คำฟุ่มเฟือยสองระดับและมีข้อมูลจำนวนมากที่ไม่เป็นประโยชน์
git branch-list
ของเรา ในทางกลับกันด้วย git branch-list
:
* master origin/master
บูม ทันทีที่เราเห็นข้อมูลที่เป็นประโยชน์ที่สุด: master
Tracks origin/master
จากนั้นหากเราต้องการทราบว่าสาขาใดที่ทันสมัยเราจะใช้ -t
:
* master origin/master<
เราสนใจจริง ๆ หรือไม่ถ้าเราเป็น 16592 มุ่งมั่นที่อยู่เบื้องหลังเมื่อเทียบกับ 14386 มุ่งมั่นที่จะอยู่เบื้องหลัง? ไม่สิ่งที่เราใส่ใจคือเราเป็น Beind ซึ่ง <
สัญลักษณ์แสดงถึง นี่เป็นข้อมูลเดียวกันกับที่คุณได้รับเมื่อคุณใช้ __git_ps1
กับ GIT_PS1_SHOWUPSTREAM=auto
หากคุณต้องการข้อมูลเพิ่มเติมคุณสามารถระบุตัวเลือก -v
:
* master [origin/master<] Linux 5.12
เราได้รับข้อมูลที่เป็นประโยชน์ที่สุดทั้งหมดในทุกระดับ (ใครสนใจว่า ID วัตถุคืออะไร?)
คุณสามารถได้รับข้อดีบางอย่างของ git branch-list
จาก git branch
อย่างเป็นทางการใครก็ตามที่คุณต้องรู้โดยเฉพาะว่าตัวเลือกใดที่จะเปิดใช้งาน
ตัวอย่างเช่นสมมติว่าคุณมีหลายสาขาที่อัปเดตเอกสารประกอบนำหน้าด้วย doc-
กับ git branch
อย่างเป็นทางการคุณสามารถทำอะไรได้บ้าง:
git branch --list doc-*
อย่างไรก็ตามสิ่งนี้ใช้งานได้ 1) มันไม่ทำงานเว้นแต่คุณจะระบุ --list
และ 2) คุณต้องเพิ่มเครื่องหมายดอกจัน ( *
)
ในทางกลับกันด้วย git branch-list
:
git branch-list doc
คุณไม่ต้องการตัวเลือกใด ๆ หรือเครื่องหมายดอกจัน มันใช้งานได้ทันที
อีกตัวอย่างหนึ่ง; คุณสามารถเปิดใช้งานการจัดเรียงสาขาที่มีประโยชน์ด้วยการกำหนดค่าต่อไปนี้:
[branch]
sort = -committerdate
แต่ด้วย git branch-list
คุณไม่จำเป็นต้อง; มันถูกจัดเรียงตามค่าเริ่มต้น
เพื่อทดสอบประสิทธิภาพฉันจะใช้ที่เก็บจริง: Linux ฉันสร้าง 100 สาขาด้วยคะแนนสุ่มอย่างสมบูรณ์ในช่วง 10 ปีที่ผ่านมา
หลังจากอุ่นแคช:
git branch --list --verbose
21.804 seconds
21.614 seconds
21.415 seconds
git branch-list
0.104 seconds
0.107 seconds
0.107 seconds
มีคำถามหรือไม่?
git branch-list
เหมือนกับ git branch --list
... แต่ ดีกว่า มาก
คัดลอกสคริปต์ทุกที่ใน $PATH
ของคุณและทำให้สามารถเรียกใช้งานได้หรือเรียกใช้ make install
ซึ่งจะติดตั้งโดยค่าเริ่มต้นไปยัง ~/bin/
Directory ของคุณ (ตรวจสอบให้แน่ใจว่าอยู่ใน $PATH
ของคุณ)