यहां कुछ शाखा नामकरण परंपराएं हैं जिनका मैं उपयोग करता हूं और उनके लिए कारण
शाखा नामकरण सम्मेलनों
- अपनी शाखा के नाम की शुरुआत में ग्रुपिंग टोकन (शब्द) का प्रयोग करें।
- परिभाषित करें और लघु लीड टोकन को शाखाओं में अंतर करने के लिए एक तरह से उपयोग करें जो आपके वर्कफ़्लो के लिए सार्थक है।
- अपने शाखा नामों के अलग-अलग हिस्सों में स्लैश का उपयोग करें।
- अग्रणी भागों के रूप में नंगे नंबरों का उपयोग न करें।
- लंबे समय तक रहने वाली शाखाओं के लिए लंबे वर्णनात्मक नामों से बचें।
समूह टोकन
अपनी शाखा के नामों के सामने "समूहीकरण" टोकन का उपयोग करें।
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/*'
मेरे लिए, मेरे शेल में टैब विस्तार (कमांड पूरा होने) के लिए स्लैश भी बेहतर काम करते हैं। जिस तरह से मैंने इसे कॉन्फ़िगर किया है मैं अलग-अलग उप-भागों के साथ शाखाओं के लिए खोज कर सकता हूं भाग के पहले अक्षर टाइप करके और टैब कुंजी दबाकर। 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 branch --list "feature/*"
git log --graph --oneline --decorate --branches="feature/*"
gitk --branches="feature/*"
कैविएट: जैसा कि स्लिप में टिप्पणियों में बताया गया है, स्लैश समस्या पैदा कर सकता है। क्योंकि शाखाओं को पथ के रूप में लागू किया जाता है, आपके पास "फू" नाम की एक शाखा और "फू / बार" नाम की एक अन्य शाखा नहीं हो सकती है। यह नए उपयोगकर्ताओं के लिए भ्रामक हो सकता है।
नंगे नंबरों का उपयोग न करें
अपनी शाखा के नामकरण योजना के भाग के रूप में नंगे नंबरों (या हेक्स संख्या) का उपयोग न करें। संदर्भ नाम के टैब-विस्तार के अंदर, git यह तय कर सकता है कि एक शाखा नाम के बजाय एक नंबर sha-1 का हिस्सा है। उदाहरण के लिए, मेरी समस्या ट्रैकर दशमलव संख्या के साथ बग का नाम है। मैं भ्रम से बचने के लिए सिर्फ nnnnn के बजाय अपनी संबंधित शाखाओं का नाम CRnnnnn रखता हूं।
$ git checkout CR15032<TAB>
Menu: fix/CR15032 test/CR15032
अगर मैंने सिर्फ 15032 का विस्तार करने की कोशिश की, तो यह अनिश्चित होगा कि क्या मैं SHA-1 या शाखा नामों की खोज करना चाहता हूं, और मेरी पसंद कुछ हद तक सीमित होगी।
लंबे वर्णनात्मक नामों से बचें
जब आप शाखाओं की सूची देख रहे हों तो लंबी शाखा के नाम बहुत मददगार हो सकते हैं। लेकिन यह उस तरीके से प्राप्त हो सकता है जब सजे हुए एक-लाइन लॉग को देख रहा हो, क्योंकि शाखा के नाम एकल लाइन को खा सकते हैं और लॉग के दृश्य भाग को संक्षिप्त कर सकते हैं।
दूसरी ओर लंबी शाखा के नाम "मर्ज कमिट्स" में अधिक सहायक हो सकते हैं यदि आप आदतन उन्हें हाथ से नहीं लिखते हैं। डिफ़ॉल्ट मर्ज कमिट मैसेज है Merge branch 'branch-name'
। मैसेज दिखाने के लिए आपको मददगार साबित हो सकता है जैसे कि Merge branch 'fix/CR15032/crash-when-unformatted-disk-inserted'
इसके बजाय मैसेज दिखाते हैं Merge branch 'fix/CR15032'
।