git 2.7 (Q4 2015) จะแนะนำการจัดเรียงสาขาโดยใช้โดยตรงgit branch:
ดูการกระทำ aa3bc55 , กระทำ aedcb7d , กระทำ 1511b22 ,กระทำ f65f139 , ... (23 ก.ย. 2558), กระทำ aedcb7d , กระทำ 1511b22 , กระทำ ca41799 (24 ก.ย. 2558), และกระทำ f65f139 ... (23 กันยายน 2015) โดยคาร์ทิคยัก (KarthikNayak )
(ผสานโดยJunio C Hamano - gitster-ในการกระทำ 7f11b48 , 15 ต.ค. 2558)
โดยเฉพาะอย่างยิ่งกระทำ aedcb7d :
branch.c: ใช้ ' ref-filter' APIs
ทำAPI ' branch.c' ใช้ ' ref-filter' เพื่อทำซ้ำผ่านการเรียงลำดับอ้างอิง สิ่งนี้จะลบรหัสส่วนใหญ่ที่ใช้ใน ' branch.c' แทนที่ด้วยการเรียกไปยังref-filterไลบรารี ''
มันเพิ่มตัวเลือก--sort=<key> :
จัดเรียงตามคีย์ที่กำหนด
คำนำหน้า-เพื่อเรียงลำดับจากมากไปน้อยของค่า
คุณสามารถใช้--sort=<key>ตัวเลือกได้หลายครั้งซึ่งในกรณีนี้คีย์สุดท้ายจะกลายเป็นคีย์หลัก
ปุ่มที่รองรับนั้นเหมือนกับgit for-each-refปุ่มระบบ
เรียงลำดับค่าเริ่มต้นเป็นเรียงตามชื่อเต็ม (รวมถึงrefs/...คำนำหน้า) รายการนี้แสดง HEAD ที่แยกออก (ถ้ามี) ก่อนจากนั้นจึงแยกสาขาท้องถิ่นและสาขาติดตามระยะไกล
ที่นี่:
git branch --sort=-committerdate
หรือ (ดูด้านล่างด้วย Git 2.19)
# if you are sure to /always/ want to see branches ordered by commits:
git config --global branch.sort -committerdate
git branch
ดูเพิ่มเติมกระทำ 9e46833 (30 ตุลาคม 2015) โดยคาร์ทิคยัก (KarthikNayak )
ช่วยเหลือโดย: Junio C Hamano ( gitster) )
(รวมโดยJunio C Hamano - gitster-ในการกระทำ 415095f , 3 พฤศจิกายน 2015)
เมื่อเรียงตามค่าตัวเลข (เช่น--sort=objectsize) จะไม่มีการเปรียบเทียบทางเลือกเมื่อทั้งสองอ้างอิงมีค่าเดียวกัน สิ่งนี้สามารถทำให้เกิดผลลัพธ์ที่ไม่คาดคิด (เช่นลำดับของการอ้างอิงรายการที่มีค่าเท่ากันไม่สามารถกำหนดล่วงหน้าได้) ดังที่โจฮันเนสซิกท์ชี้ ( $ gmane / 280117 )
ดังนั้นfallback ที่จะเปรียบเทียบตัวอักษรบนพื้นฐาน refname เมื่อใดก็ตามที่เกณฑ์อื่น ๆ จะมีค่าเท่ากับ
$ git branch --sort=objectsize
* (HEAD detached from fromtag)
branch-two
branch-one
master
ด้วย Git 2.19 การเรียงลำดับสามารถตั้งค่าได้ตามค่าเริ่มต้น
git branchสนับสนุนการตั้งค่าbranch.sortเช่นเดียวกับที่ได้มีการกำหนดค่าgit tag
ดูกระทำ 560ae1c (16 สิงหาคม 2018) โดยซามูเอล Maftoul ( ``) (ผสานโดยJunio C Hamano - -tag.sort
gitsterในการกระทำ d89db6f , 27 สิงหาคม 2018)
branch.sort:
ตัวแปรนี้ควบคุมการเรียงลำดับของสาขาเมื่อแสดงโดย git-branchตัวแปรนี้จะควบคุมการสั่งซื้อการจัดเรียงของสาขาเมื่อแสดงโดย
หากไม่มี--sort=<value>ตัวเลือก "" ค่าของตัวแปรนี้จะถูกใช้เป็นค่าเริ่มต้น
git branch -r --sort=objectsizeการแสดงรายชื่อสาขาที่ห่างไกลการใช้งาน การ-rตั้งค่าสถานะทำให้รายการสาขาระยะไกลแทนสาขาท้องถิ่น
ด้วย Git 2.27 (Q2 2020), "git branchfor-each-refตัวแปร " และอื่น ๆ " " ยอมรับ--sort=<key>ตัวเลือกหลายตัวในลำดับที่เพิ่มขึ้นของลำดับความสำคัญ แต่มันมีข้อผิดพลาดเล็กน้อยเกี่ยวกับการ--ignore-caseจัดการ "" และผูกกับ refname ซึ่งได้รับการแก้ไขแล้ว
ดูกระทำ 7c5045f , กระทำ 76f9e56 (3 พฤษภาคม 2020) โดยเจฟฟ์คิง (peff )
(ผสานโดยJunio C Hamano - gitster-ในการกระทำ 6de1630 , 08 พฤษภาคม 2020)
ref-filter: ใช้การจัดเรียง refname ทางเลือกหลังเฉพาะทุกประเภทผู้ใช้
ลงชื่อออกโดย: Jeff King
กระทำ9e468334b4 (" ref-filter: ทางเลือกในการเปรียบเทียบตามตัวอักษร", 2015-10-30, Git v2.7.0-rc0 - ผสานอยู่ในชุดที่ 10 ) สอนการจัดเรียงเตะกรองเพื่อ fallback เพื่อ refnames เปรียบเทียบ
แต่ทำในระดับที่ไม่ถูกต้องแทนที่ผลการเปรียบเทียบสำหรับ--sortคีย์เดียวจากผู้ใช้" " แทนที่จะใช้คีย์การเรียงลำดับทั้งหมดหมดแล้ว
สิ่งนี้ทำงานอย่างถูกต้องสำหรับ "--sortตัวเลือก " แต่ไม่ใช่สำหรับหลาย ๆ ตัว
เราจะทำลายความสัมพันธ์ใด ๆ ในคีย์แรกด้วย refname และไม่เคยประเมินคีย์ที่สองเลย
เพื่อให้เรื่องน่าสนใจยิ่งขึ้นเราใช้บางครั้งทางเลือกนี้!
สำหรับเขตข้อมูลเช่น " taggeremail" ซึ่งต้องการการเปรียบเทียบสตริงเราจะส่งคืนผลลัพธ์อย่างแท้จริงstrcmp()แม้ว่าจะเป็น 0
แต่สำหรับvalueฟิลด์ตัวเลข " " เช่น "taggerdate " เราได้ใช้การย้อนกลับ และนั่นคือสาเหตุที่การทดสอบหลายประเภทของเราพลาดสิ่งนี้: มันใช้taggeremailเป็นการเปรียบเทียบหลัก
ดังนั้นเริ่มต้นด้วยการเพิ่มการทดสอบที่เข้มงวดมากขึ้น เราจะมีชุดคำมั่นสัญญาที่แสดงชุดอีเมลแท็กเกอร์วันที่และชื่อซ้ำสองชุด จากนั้นเราสามารถยืนยันได้ว่าการเรียงลำดับของเราถูกนำไปใช้กับลำดับความสำคัญที่ถูกต้องและเราจะกดทั้งตัวเปรียบเทียบสตริงและค่า
นั่นแสดงข้อผิดพลาดและการแก้ไขนั้นง่าย: เลื่อนทางเลือกไปด้านนอก compare_refs()ฟังก์ชั่นหลังจากที่ref_sortingปุ่มทั้งหมดหมดลง
โปรดทราบว่าในฟังก์ชั่นด้านนอกเราไม่มี"ignore_case"ธงเพราะมันเป็นส่วนหนึ่งของแต่ละref_sortingองค์ประกอบ เป็นที่ถกเถียงกันว่าควรเลือกทางเลือกอย่างไรเนื่องจากเราไม่ได้ใช้กุญแจของผู้ใช้ในการจับคู่
แต่จนถึงขณะนี้เราได้พยายามเคารพธงนั้นดังนั้นสิ่งที่รุกรานน้อยที่สุดคือพยายามทำเช่นนั้นต่อไป
เนื่องจากผู้เรียกทั้งหมดในรหัสปัจจุบันตั้งค่าสถานะสำหรับคีย์ทั้งหมดหรือไม่มีเลยเราจึงสามารถดึงค่าสถานะจากคีย์แรก ในโลกสมมุติที่ผู้ใช้สามารถพลิกตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ของคีย์แยกกันเราอาจต้องการขยายรหัสเพื่อแยกความแตกต่างระหว่างตัวพิมพ์ใหญ่กับผ้าห่ม " --ignore-case"