कुछ समझने के लिए महत्वपूर्ण है कि गिट शाखाएं किसी प्रतिबद्धता को इंगित करने वाले लेबल से अधिक कुछ नहीं हैं। गिट में शाखाएं सचमुच शाखाबद्ध है। यहां बताया गया है भंडार लगता है कि अगर feature
master
बंद branched जब master
एक बी
A - B - C - F - H [master]
\
D - E - G - I[feature]
देखें प्रतिबद्ध किया गया था है? वास्तविक शाखा जब आप मास्टर में git merge feature
, आपको यह मिलता है।
A - B - C - F - H - J [master]
\ /
D - E - G - I [feature]
और जैसे ही आप git branch -d feature
शाखा इतिहास बनी हुई है!
A - B - C - F - H - J [master]
\ /
D - E - G - I
जे के माता-पिता एच और आई जे उनके बिना मौजूद नहीं हो सकते हैं, यह गिट काम करता है में बेक किया गया है। मैं जी के बिना अस्तित्व में नहीं रह सकता ई जी ई के बिना अस्तित्व में नहीं हो सकता है। और इसी तरह। शाखा
जे एक मर्ज प्रतिबद्ध है जिसमें आम तौर पर शाखा का नाम विलय हो जाएगा। यह किसी अन्य प्रतिबद्धता की तरह है, इसलिए आप इसके बारे में अधिक जानकारी भी जोड़ सकते हैं, जैसे कि आपके मुद्दे ट्रैकर पर एक लिंक।
git merge --no-ff
का उपयोग गिट को "फास्ट फॉरवर्ड" करने और शाखा इतिहास खोने से रोकने के लिए किया जाता है। ऐसा तब होता है जब शाखा बनाई गई थी, master
पर कोई काम नहीं किया गया है। इस तरह एक तेजी से आगे दिखता है।
A - B[master]- D - E - G - I [feature]
git checkout master
git merge feature
A - B - D - E - G - I [feature] [master]
master
के बाद से feature
का प्रत्यक्ष पूर्वज है, कोई मर्ज की आवश्यकता है। गिट बस master
लेबल ले जा सकता है। आपका शाखा इतिहास खो गया है, ऐसा लगता है कि डी, ई, जी और मैं सभी मास्टर पर व्यक्तिगत काम करता हूं। git merge --no-ff
गिट को हमेशा ऐसा करने के लिए कहता है, हमेशा मर्ज करने के लिए।
भविष्य में, जब यह देखा गया कि जी में एक बग पेश किया गया था, तो रिपोजिटरी ब्राउज़ करने वाले किसी भी व्यक्ति को यह देख सकता है कि यह शाखा के हिस्से के रूप में किया गया था, मर्ज प्रतिबद्धता खोजने के लिए आगे देखो, और वहां से शाखा के बारे में जानकारी प्राप्त करें।
फिर भी, शाखा को क्यों हटाएं?दो कारण। सबसे पहले, यह आपकी शाखाओं की सूची मृत शाखाओं के साथ अव्यवस्थित करेगा।
दूसरा, और अधिक महत्वपूर्ण, यह आपको शाखा का पुन: उपयोग करने से रोकता है। शाखाकरण और विलय जटिल हैं। एकल उपयोग, अल्पकालिक फीचर शाखाएं यह सुनिश्चित करके प्रक्रिया को सरल बनाती हैं कि आप शाखा को वापस में केवल में मर्ज करें। यह कई तकनीकी और प्रबंधन समस्याओं को समाप्त करता है। जब आप शाखा को विलय करते हैं, तो किया जाता है। यदि आपको उस शाखा में पेश की गई समस्या को ठीक करने की आवश्यकता है, तो बस इसे मास्टर में एक बग के रूप में देखें और इसे ठीक करने के लिए एक नई शाखा बनाएं।
दुर्भाग्यवश, git log
उपयोगकर्ता के लिए निहित है और इतिहास का एक रैखिक प्रतिनिधित्व प्रस्तुत करता है जो रैखिक नहीं है। इसे ठीक करने के लिए, git log --graph --decorate
का उपयोग करें। यह उपरोक्त मेरे उदाहरणों में लाइनों को आकर्षित करेगा, और आपको प्रत्येक प्रतिबद्धता पर कोई शाखाएं और टैग दिखाएगा। आपको भंडार का एक बहुत अच्छा दृश्य मिलेगा।
यदि आप मैक पर हैं, तो GitX आपके लिए भंडार को विज़ुअलाइज़ करेगा। gitk सामान्य संस्करण है।
क्योंकि आपकी सुविधा समाप्त हो गई है। शाखा को बनाए रखने की क्या आवश्यकता होगी, जिससे गिट शाखा-ए आदि के नतीजे खराब हो जाएंगे? –
@ ओलिवर चार्ल्सवर्थ इतिहास –
@ जेडखुल्ला - काम अभी भी इतिहास में होगा। –