यदि आप branch
कमांड के इस रूप का उपयोग कर रहे हैं (शुरुआत बिंदु के साथ), तो इससे कोई फर्क नहीं पड़ता कि आपका कहां HEAD
है।
तुम क्या कर रहे हो:
git checkout dev
git branch test 07aeec983bfc17c25f0b0a7c1d47da8e35df7af8
सबसे पहले, आपने अपनी HEAD
शाखा को सेट किया dev
,
दूसरा, आप एक नई शाखा शुरू करते हैं 07aeec98
। इस कमिट में कोई bb.txt नहीं है (आपके गीथूब रेपो के अनुसार)।
यदि आप उस स्थान पर एक नई शाखा शुरू करना चाहते हैं जिसे आपने अभी-अभी देखा है, तो आप या तो बिना किसी आरंभ बिंदु के शाखा चला सकते हैं:
git branch test
या जैसा कि अन्य ने उत्तर दिया है, एक ऑपरेशन में शाखा और चेकआउट:
git checkout -b test
मुझे लगता है कि आप उस तथ्य से भ्रमित हो सकते हैं 07aeec98
जो शाखा का हिस्सा है dev
। यह सही है कि यह कमिटमेंट पूर्वजों का है dev
, इसके बदलावों को नवीनतम कमिटमेंट तक पहुंचने की जरूरत है dev
। हालांकि, वे अन्य कमिट हैं जिन्हें नवीनतम तक पहुंचने की आवश्यकता है dev
, और ये जरूरी नहीं कि इतिहास में हैं 07aeec98
।
8480e8ae
(जहाँ आपने bb.txt को जोड़ा है) उदाहरण के लिए नहीं के इतिहास में है 07aeec98
। यदि आप से शाखा 07aeec98
, आप द्वारा शुरू किए गए परिवर्तन नहीं मिलेगा 8480e8ae
।
दूसरे शब्दों में: यदि आप शाखा A और शाखा B को C C में मिलाते हैं, तो A की ओर से एक नई शाखा बनाएँ, तो आपको B में शुरू किए गए परिवर्तन नहीं मिलेंगे।
यहां भी, आपके पास दो समानांतर शाखाएं हैं स्वामी और देव, जिसे आपने देव में मिला दिया था। मास्टर की एक कमेटी (मर्ज से बड़ी) की शाखा आपको देव परिवर्तन के साथ प्रदान नहीं करेगी।
यदि आप अपनी सुविधा शाखाओं में मास्टर से नए परिवर्तनों को स्थायी रूप से एकीकृत करना चाहते हैं, तो आपको master
उनमें विलय करना चाहिए और आगे बढ़ना चाहिए । यह आपकी सुविधा शाखाओं में मर्ज कमिट्स बनाएगा, हालाँकि।
यदि आपने अपनी सुविधा शाखाएँ प्रकाशित नहीं की हैं, तो आप उन्हें अपडेट किए गए मास्टर पर भी रिबेस कर सकते हैं git rebase master featureA
:। संभव संघर्षों को हल करने के लिए तैयार रहें।
यदि आप एक ऐसा वर्कफ़्लो चाहते हैं, जहाँ आप मर्ज किए गए फ़ीचर शाखाओं पर काम कर सकते हैं और फिर भी मास्टर में नए बदलावों के साथ एकीकृत कर सकते हैं, तो मैं निम्नलिखित सलाह देता हूँ:
- मास्टर की ओर से प्रत्येक नई सुविधा शाखा को आधार बनाएं
dev
मास्टर की ओर से एक शाखा बनाएँ
- जब आपको यह देखना होगा कि आपकी सुविधा शाखा मास्टर में नए परिवर्तनों के साथ कैसे एकीकृत होती है, तो मास्टर और फीचर शाखा दोनों को मर्ज करें
dev
।
dev
सीधे तौर पर प्रतिबद्ध न हों , इसका उपयोग केवल अन्य शाखाओं के विलय के लिए करें।
उदाहरण के लिए, यदि आप A और B सुविधा पर काम कर रहे हैं:
a---b---c---d---e---f---g -master
\ \
\ \-x -featureB
\
\-j---k -featureA
एक dev
शाखा में शाखाओं को मिलाएं ताकि यह जांच सकें कि वे नए मास्टर के साथ काम करते हैं:
a---b---c---d---e---f---g -master
\ \ \
\ \ \--x'---k' -dev
\ \ / /
\ \-x---------- / -featureB
\ /
\-j---k--------------- -featureA
आप अपनी सुविधा शाखाओं पर काम करना जारी रख सकते हैं, और dev
नियमित रूप से मास्टर और फीचर शाखाओं दोनों से नए परिवर्तनों में विलय कर सकते हैं ।
a---b---c---d---e---f---g---h---i----- -master
\ \ \ \
\ \ \--x'---k'---i'---l' -dev
\ \ / / /
\ \-x---------- / / -featureB
\ / /
\-j---k-----------------l------ -featureA
जब नई सुविधाओं को एकीकृत करने का समय है, तो dev
मास्टर में फीचर शाखाओं (नहीं !) को मर्ज करें ।