ตัวอย่างของวิธีปฏิบัติที่ใช้กันทั่วไปสำหรับการตั้งชื่อสาขา git มีอะไรบ้าง [ปิด]


1121

ฉันใช้พื้นที่เก็บข้อมูลคอมไพล์ในพื้นที่โต้ตอบกับที่เก็บ CVS ของกลุ่มเป็นเวลาหลายเดือนแล้ว ฉันได้สร้างสาขาที่มีอาการทางประสาทเกือบทั้งหมดซึ่งส่วนใหญ่ได้ผสานกลับเข้าที่ลำต้นของฉันแล้ว แต่การตั้งชื่อเริ่มเป็นปัญหา ถ้าฉันมีงานที่ตั้งชื่อง่าย ๆ ด้วยเลเบลอย่างง่าย แต่ฉันทำสำเร็จในสามขั้นตอนซึ่งแต่ละอันรวมถึงสาขาและสถานการณ์การรวมของตัวเองฉันสามารถทำซ้ำชื่อสาขาในแต่ละครั้ง แต่นั่นทำให้ประวัติศาสตร์สับสนเล็กน้อย ถ้าฉันมีความเฉพาะเจาะจงมากขึ้นในชื่อโดยมีคำอธิบายแยกต่างหากสำหรับแต่ละสเตจชื่อสาขาจะเริ่มยาวและเทอะทะ

ฉันเรียนรู้การดูหัวข้อเก่า ๆ ที่นี่ซึ่งฉันสามารถเริ่มตั้งชื่อสาขาด้วย / ในชื่อเช่นหัวข้อ / ภารกิจหรืออะไรทำนองนั้น ฉันอาจเริ่มทำสิ่งนั้นและดูว่ามันช่วยให้การจัดระเบียบดีขึ้นหรือไม่

แนวทางปฏิบัติที่ดีที่สุดในการตั้งชื่อสาขา git คืออะไร?

แก้ไข: ไม่มีใครแนะนำการตั้งชื่อใด ๆ ฉันจะลบสาขาเมื่อฉันทำกับพวกเขา ฉันเพิ่งมีหลายรอบเนื่องจากการจัดการปรับลำดับความสำคัญของฉันอย่างต่อเนื่อง :) เป็นตัวอย่างของสาเหตุที่ฉันอาจต้องการมากกว่าหนึ่งสาขาในงานสมมติว่าฉันต้องยอมรับเหตุการณ์สำคัญที่ไม่ต่อเนื่องครั้งแรกในงานไปยังที่เก็บ CVS ของกลุ่ม ณ จุดนั้นเนื่องจากการมีปฏิสัมพันธ์ที่ไม่สมบูรณ์ของฉันกับ CVS ฉันจะทำการกระทำนั้นแล้วฆ่าสาขานั้น (ฉันเห็นความแปลกประหลาดมากเกินไปในการโต้ตอบกับ CVS ถ้าฉันพยายามที่จะใช้สาขาเดิมต่อไปในตอนนั้น)


ใช่ - เป็นเรื่องที่ดีที่จะไม่ป้องกันหรือผลักกิ่งที่ไม่มีประโยชน์หลังจากที่คุณทำเสร็จแล้ว หากไม่มีเหตุผลที่ดีในการรักษาสาขาหัวข้อ (เช่นเพื่อปรึกษาในภายหลัง) จะไม่มีปัญหาในการลบ Git ทำให้การแยกกิ่งทำได้ง่ายและข้อพิสูจน์ก็คือคุณสามารถจบลงด้วยกิ่งไม้เล็ก ๆ จำนวนมากที่อยู่รอบ ๆ ซึ่งสามารถล้างทำความสะอาดได้โดยไม่ต้องกังวลใจมากนัก
Eric Walker

14
ดูเพิ่มเติมที่github.com/agis-/git-style-guide
Agis

2
เพื่อความสมบูรณ์มีลำดับอักขระบางตัวที่คุณไม่สามารถใช้ได้
Nick Westgate

18
จะต้องมีสถานที่สำหรับคำถามประเภทนี้ภายในเครือข่าย StackExchange น่ารำคาญมากเมื่อมีคนถามคำถามที่ดีเช่นนี้แล้วมันจะถูกปิดเพราะไม่ทำตามกฎ ถ้ามันยังคงเกิดขึ้นนั่นอาจเป็นสัญญาณว่าจำเป็นต้องสนับสนุนคำถามประเภทนี้อย่างใด เท่านั้นเหล่านี้อาจต้องนำไปใช้ภายในไซต์ Overflow เนื่องจากเกี่ยวข้องกับคำถามประเภทการเขียนโปรแกรมอย่างใกล้ชิด สำหรับฉันแล้วล้นไม่ใช่สำหรับ "คำถามที่ตอบได้อย่างเป็นกลาง" (เจาะจงเกินไป) นั่นคือ "คำถามการเขียนโปรแกรม"
Nick Res

@Wim เราใช้คีย์ปัญหา jira รวมกับชื่อสั้น ๆ เช่น:KEY-1234/allow-users-to-do-smart-stuff
RobAu

คำตอบ:


938

ต่อไปนี้เป็นข้อตกลงการตั้งชื่อสาขาที่ฉันใช้และเหตุผลสำหรับพวกเขา

อนุสัญญาการตั้งชื่อสาขา

  1. ใช้โทเค็นการจัดกลุ่ม (คำ) ที่จุดเริ่มต้นของชื่อสาขาของคุณ
  2. กำหนดและใช้โทเค็นการรอคอยสั้น ๆ เพื่อแยกสาขาในวิธีที่มีความหมายต่อเวิร์กโฟลว์ของคุณ
  3. ใช้เครื่องหมายทับเพื่อแยกส่วนของชื่อสาขาของคุณ
  4. อย่าใช้ตัวเลขที่เปลือยเปล่าเป็นส่วนนำ
  5. หลีกเลี่ยงชื่อที่สื่อความหมายยาวสำหรับกิ่งที่มีอายุยืน

โทเค็นกลุ่ม

ใช้โทเค็น "การจัดกลุ่ม" หน้าชื่อสาขาของคุณ

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'


156
ข้อเสียอย่างหนึ่งของการใช้รูปแบบผสมผสานเช่นนี้bug/20574/frabnotz-finderและbug/20424เมื่อคุณเริ่มโดยไม่มีโทเค็นย่อยคุณจะไม่สามารถเพิ่มทีหลังและในทางกลับกัน EG: ถ้าคุณสร้างbug/20424สาขาคุณจะไม่สามารถสร้างbug/20424/additional-fixingสาขาได้ในภายหลัง (เว้นแต่คุณจะลบbug/20424สาขา) เช่นเดียวกันหากbug/20574/frabnotz-finderเป็นสาขาแล้วคุณจะไม่สามารถสร้างbug/20574สาขาได้ ฉันมักจะใช้ตัวคั่นที่ไม่ใช่โทเค็นในกรณีเช่นนี้ (เช่นbug/20574_frabnotz-finder) หรือเลือกชื่อเริ่มต้นสำหรับโทเค็นย่อย (เช่นbug/20424/main)
Slipp D. Thompson

5
นอกจากนี้ยังมีประโยชน์ในการพร้อมท์เครื่องมือที่ใช้ Git GUI เพื่ออนุญาตให้การแบ่งโทเค็นการยุบเช่นมุมมองรายการไดเรกทอรี ในตัวอย่างข้างต้นคุณจะเห็นfeatureกลุ่มและbugกลุ่มที่ขยายเพื่อแสดงfoo, barแท็กสำหรับอดีตและ20574, 20592กลุ่ม20424, 21334แท็กสำหรับหลัง
Slipp D. Thompson

47
ฉันจะเริ่มแคมเปญเพื่อไม่ใช้เครื่องหมายทับในการตั้งชื่อสาขา git เหตุผลนี้คือถ้าใน CI เช่นคุณต้องการอ้างถึงชื่อสาขาเมื่อบรรจุภัณฑ์รหัสตัวอย่างเช่นคุณต้องการอ้างถึงชื่อของสาขาเมื่อสร้าง uri หรือ PATH (เช่น) อาจจะสร้าง uri ในสคริปต์ทุบตี; คุณจะมีปัญหาในการสร้าง uri เนื่องจากสแลชเพิ่มส่วน URL ใช่เป็นไปได้ที่จะแทนที่สแลช แต่มันจะพาฉันไปมีเวลามากที่จะสังคายนา
Adam Spence

13
เป็นปัญหาที่เครื่องหมายทับซ้ายมีความหมายต่อคอมไพล์ในบางกรณีหรือไม่? เช่นในการตอบสนองgit branch -aและการรับremotes/origin/masterฯลฯ เมื่อฉันเห็นคอมไพล์บอกฉันเกี่ยวกับสาขาฉันไม่ได้ใช้เครื่องหมายทับซ้ายและเมื่อฉันเห็นมันฉันรู้ว่ามันคือการอ้างอิง "พิเศษ"
Dogweather

11
คุณสามารถใช้ตัวอย่างแทน foo และ bar ได้ไหม?
คุ้มค่า 7

329

รูปแบบการแยก Git ที่ประสบความสำเร็จโดย Vincent Driessen มีคำแนะนำที่ดี ภาพด้านล่าง ถ้าแบบนี้แตกแขนงสนใจให้คุณพิจารณาขยายการไหลจะคอมไพล์ คนอื่น ๆ ให้ความเห็นเกี่ยวกับการไหล

แบบจำลองของ Driessen ประกอบด้วย

  • สาขาหลักใช้สำหรับวางจำหน่ายเท่านั้น masterชื่อทั่วไป

  • สาขา "พัฒนา" ออกจากสาขานั้น นั่นคือสิ่งที่ใช้สำหรับงานสายหลักส่วนใหญ่ developชื่อทั่วไป

  • ฟีเจอร์หลายสาขาแยกออกจากสาขาที่กำลังพัฒนา ชื่อตามชื่อของคุณสมบัติ สิ่งเหล่านี้จะถูกนำกลับไปรวมกับการพัฒนาไม่ใช่เป็นมาสเตอร์หรือสาขาย่อย

  • สาขาปล่อยเพื่อระงับการปล่อยผู้สมัครที่มีการแก้ไขข้อบกพร่องเท่านั้นและไม่มีคุณสมบัติใหม่ rc1.1ชื่อทั่วไป

โปรแกรมแก้ไขด่วนเป็นกิ่งก้านสั้นสำหรับการเปลี่ยนแปลงที่มาจากต้นแบบและจะเปลี่ยนเป็นต้นแบบโดยไม่เกี่ยวข้องกับสาขาการพัฒนา

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


129
ยกเว้นว่ามันไม่ได้โดดอยู่คำถามเพราะมันใบพวงของการตั้งชื่อขึ้นกับผู้ใช้โดยเฉพาะอย่างยิ่งสำหรับสาขาคุณลักษณะ (พวกเขาสามารถ "อะไรยกเว้นต้นแบบพัฒนา release- หรือ hotfix- "
ไบรอัน

1
@Brian แผนการตั้งชื่อคุณลักษณะจะช่วยอะไรในบริบทของปัญหาที่ตัวแบบแก้ได้ ปัจจุบันนี้ฉันไม่เห็นความแตกต่างของคุณสมบัติเพิ่มเติมช่วยได้อย่างไร อาจเทียบกับรุ่นต่อไปในอนาคต แต่มันสามารถต่อรองได้ดังนั้นจึงไม่ควรเป็นส่วนหนึ่งของชื่อ เพื่อความสะดวกในการอ่านบางทีการเตรียมคุณสมบัติด้วย - ให้เพียงพอ คุณลุกขึ้นโหวตสองสามครั้งดังนั้นฉันแค่อยากรู้อยากเห็นคุณคิดว่ากระบวนการ ...
นิค Res

2
แม้ว่าข้อมูลที่ดีคำตอบนี้จะตอบคำถามของโฟลว์แทนที่จะเป็นแบบแผน ฉันคิดว่า OP ต้องการทราบว่าคำที่ใช้จริง (คำนาม vs คำกริยา), ตัวคั่น, ตัวพิมพ์เล็กและใหญ่
Caltor

6
หนังสือการจัดส่งแบบต่อเนื่อง (หน้า 36) ให้เหตุผลว่ารุ่นนี้เป็นสิ่งที่ตรงกันข้ามกับการบูรณาการอย่างต่อเนื่อง ... โดยพื้นฐานแล้วมันไม่ใช่ "ว่องไว" จริงๆ
Markon

นี่ไม่ได้ตอบคำถามที่ถาม สิ่งนี้จะนำเสนอข้อมูลเชิงลึกเกี่ยวกับการรวมเวิร์กโฟลว์คอมไพล์ที่เฉพาะเจาะจงเข้ากับการพัฒนาที่ครอบคลุมและกำหนดเวลาการเปิดตัวอย่างไรก็ตาม op กำลังมองหาคำแนะนำเกี่ยวกับอนุสัญญาว่าจะเรียกสาขาอย่างไร
wheeler

56

การตั้งค่าส่วนตัวของฉันคือการลบชื่อสาขาหลังจากฉันเสร็จสิ้นด้วยหัวข้อสาขา

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

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

นั่นทำให้การส่งออกgit branchมีประโยชน์มากขึ้นเช่นกัน: แสดงเฉพาะสาขาที่มีอายุการใช้งานยาวนานและสาขาหัวข้อที่ใช้งานอยู่


53

ฉันได้ผสมและจับคู่จากแผนการที่แตกต่างที่ฉันเคยเห็นและใช้เครื่องมือที่ฉันใช้
ดังนั้นชื่อสาขาที่สมบูรณ์ของฉันจะเป็น:

ชื่อ / คุณสมบัติ / ปัญหาติดตามหมายเลข / สั้นคำอธิบาย

ซึ่งจะแปลเป็น:

ไมค์ / บล็อก / RSSI-12 / โลโก้แก้ไข

ชิ้นส่วนจะถูกคั่นด้วยเครื่องหมายสแลชเพราะถูกตีความว่าเป็นโฟลเดอร์ใน SourceTree เพื่อการจัดระเบียบที่ง่าย เราใช้จิราสำหรับการติดตามปัญหาของเราดังนั้นการรวมหมายเลขทำให้ง่ายต่อการค้นหาในระบบ การรวมหมายเลขนั้นยังทำให้สามารถค้นหาได้เมื่อพยายามค้นหาปัญหาภายใน Github เมื่อพยายามส่งคำขอการดึง


ฉันเหมือนกันยกเว้นข้อผิดพลาด / หมายเลขคุณลักษณะในข้อความยืนยัน (สำหรับการรวม GitHub -> Pivotal Tracker)
Leo

ฉันสงสัยว่า RSSI หมายถึงอะไร
Renshuki

@renshuki เป็นเพียงรหัสโครงการ Jira ทั่วไป ไม่ว่าคุณจะใช้ปัญหาอะไรติดตามให้ใส่รหัสตั๋ว
MikeG

@ MikeG ขอบคุณสำหรับความแม่นยำ!
Renshuki

3
ฉันใช้แบบเดียวกันยกเว้นฉันส่งหมายเลขปัญหาพร้อมกับคำอธิบาย:name/feature/issue-tracker-number-short-description
lephleg

22

เหตุใดจึงต้องใช้สามสาขา / การผสานสำหรับทุกภารกิจ คุณอธิบายเพิ่มเติมเกี่ยวกับเรื่องนั้นได้ไหม

หากคุณใช้ระบบติดตามบั๊กคุณสามารถใช้หมายเลขบั๊กเป็นส่วนหนึ่งของชื่อสาขาได้ "ResizeWindow-43523"นี้จะช่วยให้ชื่อสาขาที่ไม่ซ้ำกันและคุณสามารถนำหน้าพวกเขาด้วยคำพูดและคำอธิบายสั้นหรือสองเพื่อให้พวกเขาอ่านของมนุษย์เช่น นอกจากนี้ยังช่วยให้ทำสิ่งต่าง ๆ ได้ง่ายขึ้นเมื่อคุณไปทำความสะอาดกิ่งไม้เนื่องจากคุณสามารถค้นหาข้อบกพร่องที่เกี่ยวข้อง นี่คือวิธีที่ฉันมักจะตั้งชื่อสาขาของฉัน

เนื่องจากในที่สุดสาขาเหล่านี้จะได้รับการผสานกลับคืนสู่ต้นแบบคุณควรลบอย่างปลอดภัยหลังจากทำการผสาน --squashประวัติของสาขาจะยังคงอยู่หากคุณไม่จำเป็นต้องผสานเข้าด้วยกัน


12

หมายเหตุดังที่แสดงในการกระทำ e703d7หรือกระทำ b6c2a0d (มีนาคม 2014) ตอนนี้เป็นส่วนหนึ่งของ Git 2.0 คุณจะพบระเบียบการตั้งชื่ออื่น (ซึ่งคุณสามารถนำไปใช้กับสาขา)

"เมื่อคุณต้องการใช้พื้นที่ใช้เส้นประ" เป็นวิธีแปลก ๆ ที่จะบอกว่าคุณต้องไม่ใช้พื้นที่
เนื่องจากเป็นเรื่องปกติมากสำหรับคำอธิบายบรรทัดคำสั่งเพื่อใช้ประหลายคำคุณจึงไม่ต้องการใช้ช่องว่างในสถานที่เหล่านี้

ชื่อสาขาไม่สามารถเว้นวรรคได้ (ดู " อักขระใดบ้างที่ผิดกฎหมายภายในชื่อสาขา " และgit check-ref-formatหน้าคน )

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


7

การติดตามข้อเสนอแนะของ farktronix เราได้ใช้หมายเลขตั๋วจิราเพื่อความเป็นปรอทและฉันวางแผนที่จะใช้พวกเขาสำหรับสาขาคอมไพล์ต่อไป แต่ฉันคิดว่าหมายเลขตั๋วนั้นอาจไม่ซ้ำกันพอ แม้ว่าอาจมีประโยชน์หากมีคำอธิบายในชื่อสาขาตามที่ farktronix จดบันทึกไว้หากคุณสลับไปมาระหว่างสาขาบ่อยพอคุณอาจต้องการพิมพ์น้อยลง จากนั้นถ้าคุณจำเป็นต้องรู้ชื่อสาขาให้มองหาคำสำคัญที่เกี่ยวข้องในตั๋วหากคุณไม่ทราบ นอกจากนี้คุณควรระบุหมายเลขตั๋วในแต่ละความคิดเห็น

หากสาขาของคุณแสดงถึงเวอร์ชันปรากฏว่าแบบแผนทั่วไปคือการใช้รูปแบบ xxx (ตัวอย่าง: "1.0.0") สำหรับชื่อสาขาและ vx.xx (ตัวอย่าง "v1.0.0") สำหรับชื่อแท็ก (เพื่อหลีกเลี่ยงความขัดแย้ง) . ดูเพิ่มเติมที่: is-there-an-an-an-an-standard


1
มีปัญหากับข้อขัดแย้งหรือไม่? หากเจตนาเพื่อให้v1.2.4สาขานำไปสู่จุดสิ้นสุดในที่สุดด้วยv1.2.4แท็ก(ฉันถูกต้องในการสมมติว่านี่เป็นสถานการณ์ที่คุณทั้งสองตั้งชื่อสาขาและแท็กหลังจากรุ่น)แล้วมันสำคัญไหม? แท็กยังคงสามารถเข้าถึงได้refs/tags/v1.2.4และสาขาที่refs/heads/v1.2.4และปรากฏ Git จะต้องการชื่อแท็กเมื่อมันไม่ชัดเจน (พร้อมคำเตือน)
Slipp D. Thompson

1
สำหรับตัวอย่างเวอร์ชันดังที่ฉันได้กล่าวไว้ในคำตอบแนวทางปฏิบัติที่แนะนำคือนำหน้าด้วย "v" สำหรับชื่อแท็กไม่ใช่สาขา หลีกเลี่ยงความคลุมเครือหากคุณสามารถหลีกเลี่ยงการสื่อสารผิดพลาดและอาจทำให้เกิดปัญหาในการย้ายถิ่นฐานไปยังสิ่งที่ VCS ล่าสุดและยิ่งใหญ่ที่สุดถัดไปคือ
Gary S. Weaver

2
ฉันเพิ่งทำงานกับ repo ที่เราต่อยอดสาขาแต่ละเวอร์ชันด้วยแท็กชื่อเดียวกัน มันใช้งานได้ดีมากเพราะไม่มีความคลุมเครือเล็กน้อย (แท็กชี้ไปที่การกระทำสุดท้ายในสาขาที่เกี่ยวข้องในกรณีส่วนใหญ่) และเมื่อมีอาจ Git "ทำสิ่งที่ถูกต้อง" (พร้อมคำเตือน) ฉันชอบเพราะถ้ามีคนทำผิดพลาดที่กระดูกและมุ่งมั่นที่จะต่อยอดสาขาที่ปิดยอด Git จะยังคงเลือกแท็กซึ่งเป็นเจตนาต่อไป ความคลุมเครือสามารถทำให้สิ่งต่าง ๆ ง่ายขึ้นเมื่อระบบมีทุกสิ่งภายใต้การควบคุมและเจตนาชัดเจน
Slipp D. Thompson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.