ต่อไปนี้เป็นข้อตกลงการตั้งชื่อสาขาที่ฉันใช้และเหตุผลสำหรับพวกเขา
อนุสัญญาการตั้งชื่อสาขา
- ใช้โทเค็นการจัดกลุ่ม (คำ) ที่จุดเริ่มต้นของชื่อสาขาของคุณ
- กำหนดและใช้โทเค็นการรอคอยสั้น ๆ เพื่อแยกสาขาในวิธีที่มีความหมายต่อเวิร์กโฟลว์ของคุณ
- ใช้เครื่องหมายทับเพื่อแยกส่วนของชื่อสาขาของคุณ
- อย่าใช้ตัวเลขที่เปลือยเปล่าเป็นส่วนนำ
- หลีกเลี่ยงชื่อที่สื่อความหมายยาวสำหรับกิ่งที่มีอายุยืน
โทเค็นกลุ่ม
ใช้โทเค็น "การจัดกลุ่ม" หน้าชื่อสาขาของคุณ
group1/foo
group2/foo
group1/bar
group2/bar
group3/bar
group1/baz
กลุ่มสามารถตั้งชื่อสิ่งที่คุณต้องการให้ตรงกับเวิร์กโฟลว์ของคุณ ฉันชอบใช้คำนามสั้น ๆ สำหรับฉัน อ่านต่อเพื่อความชัดเจนมากขึ้น
โทเค็นที่กำหนดอย่างสั้น
เลือกโทเค็นสั้น ๆ เพื่อไม่ให้รบกวนชื่อสาขาของคุณมากเกินไป ฉันใช้สิ่งเหล่านี้:
wip Works in progress; stuff I know won't be finished soon
feat Feature I'm adding or expanding
bug Bug fix or experiment
junk Throwaway branch created to experiment
แต่ละโทเค็นเหล่านี้สามารถใช้เพื่อบอกให้คุณทราบถึงขั้นตอนการทำงานของแต่ละสาขา
ดูเหมือนว่าคุณจะมีหลายสาขาสำหรับรอบที่แตกต่างกันของการเปลี่ยนแปลง ฉันไม่ทราบว่ารอบของคุณคืออะไร แต่สมมติว่าเป็น 'ใหม่', 'ทดสอบ' และ 'ยืนยันแล้ว' คุณสามารถตั้งชื่อสาขาของคุณด้วยแท็กเวอร์ชันย่อเหล่านี้สะกดแบบเดียวกับกลุ่มและเพื่อเตือนคุณว่าคุณอยู่ในสถานะใด
new/frabnotz
new/foo
new/bar
test/foo
test/frabnotz
ver/foo
คุณสามารถบอกได้อย่างรวดเร็วว่าสาขาใดที่มาถึงแต่ละสเตจที่แตกต่างกันและคุณสามารถจัดกลุ่มให้เข้ากันได้อย่างง่ายดายโดยใช้ตัวเลือกการจับคู่รูปแบบของ Git
$ git branch --list "test/*"
test/foo
test/frabnotz
$ git branch --list "*/foo"
new/foo
test/foo
ver/foo
$ gitk --branches="*/foo"
ใช้เครื่องหมายทับเพื่อแยกชิ้นส่วน
คุณอาจใช้ตัวคั่นใดก็ได้ที่คุณชอบในชื่อสาขา แต่ฉันพบว่าเครื่องหมายทับมีความยืดหยุ่นมากที่สุด คุณอาจต้องการใช้เครื่องหมายขีดคั่นหรือจุด แต่สแลชช่วยให้คุณทำการเปลี่ยนชื่อสาขาเมื่อกดหรือดึงข้อมูลจาก / จากระยะไกล
$ git push origin 'refs/heads/feature/*:refs/heads/phord/feat/*'
$ git push origin 'refs/heads/bug/*:refs/heads/review/bugfix/*'
สำหรับฉันแล้วเครื่องหมายทับจะทำงานได้ดีขึ้นสำหรับการขยายแท็บ (การทำให้คำสั่งเสร็จสมบูรณ์) ในเชลล์ของฉัน วิธีที่ฉันตั้งค่าไว้ฉันสามารถค้นหาสาขาที่มีชิ้นส่วนย่อยที่แตกต่างกันโดยพิมพ์อักขระตัวแรกของชิ้นส่วนและกดปุ่ม TAB จากนั้น Zsh ให้รายชื่อสาขาที่ตรงกับส่วนของโทเค็นที่ฉันพิมพ์ สิ่งนี้ใช้สำหรับโทเค็นก่อนหน้านี้รวมถึงสิ่งที่ฝังอยู่
$ git checkout new<TAB>
Menu: new/frabnotz new/foo new/bar
$ git checkout foo<TAB>
Menu: new/foo test/foo ver/foo
(Zshell สามารถกำหนดค่าได้มากเกี่ยวกับคำสั่งที่สมบูรณ์และฉันยังสามารถกำหนดค่าให้จัดการกับขีดกลางขีดล่างหรือจุดแบบเดียวกัน แต่ฉันเลือกที่จะไม่ทำ)
นอกจากนี้ยังช่วยให้คุณค้นหาสาขาในคำสั่ง git มากมายเช่นนี้
git branch --list "feature/*"
git log --graph --oneline --decorate --branches="feature/*"
gitk --branches="feature/*"
Caveat: Slipp ชี้ให้เห็นในความคิดเห็นที่ทับอาจทำให้เกิดปัญหา เนื่องจากกิ่งไม้ถูกนำไปใช้เป็นเส้นทางคุณจึงไม่สามารถมีสาขาชื่อ "foo" และสาขาอื่นที่ชื่อว่า "foo / bar" สิ่งนี้อาจทำให้ผู้ใช้ใหม่สับสน
อย่าใช้ตัวเลขที่เปลือยเปล่า
อย่าใช้ใช้หมายเลขที่เปลือยเปล่า (หรือเลขฐานสิบหก) เป็นส่วนหนึ่งของแผนการตั้งชื่อสาขาของคุณ ภายในการขยายแท็บชื่ออ้างอิง git อาจตัดสินใจว่าตัวเลขเป็นส่วนหนึ่งของ sha-1 แทนที่จะเป็นชื่อสาขา ตัวอย่างเช่นตัวติดตามปัญหาของฉันตั้งชื่อข้อบกพร่องด้วยตัวเลขทศนิยม ฉันตั้งชื่อสาขาที่เกี่ยวข้องกับ CRnnnnn ไม่ใช่แค่ nnnnn เพื่อหลีกเลี่ยงความสับสน
$ git checkout CR15032<TAB>
Menu: fix/CR15032 test/CR15032
ถ้าฉันพยายามที่จะขยายเพียง 1,7532, git จะไม่แน่ใจว่าฉันต้องการค้นหาชื่อ SHA-1 หรือสาขาและตัวเลือกของฉันจะค่อนข้าง จำกัด
หลีกเลี่ยงชื่อที่สื่อความหมายยาว
ชื่อสาขายาวจะมีประโยชน์มากเมื่อคุณดูรายการสาขา แต่มันสามารถเข้าไปในทางเมื่อดูที่บันทึกบรรทัดเดียวที่ตกแต่งเนื่องจากชื่อสาขาสามารถกินส่วนใหญ่ของบรรทัดเดียวและย่อส่วนที่มองเห็นได้ของบันทึก
ในทางกลับกันชื่อสาขายาวจะมีประโยชน์มากขึ้นใน "ผสานกระทำ" ถ้าคุณไม่ได้เขียนด้วยมือเป็นประจำ Merge branch 'branch-name'
ผสานเริ่มต้นกระทำเป็นข้อความ คุณอาจจะพบว่ามันเป็นประโยชน์มากขึ้นที่จะมีข้อความผสานแสดงขึ้นเป็นแทนเพียงMerge branch 'fix/CR15032/crash-when-unformatted-disk-inserted'
Merge branch 'fix/CR15032'