मैं एक नई स्थानीय शाखा में एक शाखा की सामग्री को कैसे कॉपी कर सकता हूं?


270

मैंने एक स्थानीय शाखा में काम किया है और दूरदराज के बदलावों को भी आगे बढ़ाया है। मैं उस शाखा के परिवर्तनों को वापस लेना चाहता हूं और उस पर कुछ और करना चाहता हूं, लेकिन मैं पूरी तरह से काम नहीं खोना चाहता। मैं कुछ ऐसा सोच रहा था कि स्थानीय स्तर पर एक नई शाखा बनाएं और पुरानी शाखा को कॉपी करें, फिर मैं परिवर्तनों को वापस कर सकता हूं और पुरानी शाखा पर काम करना जारी रख सकता हूं। क्या कोई बेहतर तरीका हो सकता है? या मैं यह कैसे करूँ?


10
4 साल बाद, Git 2.15 (Q4 2017) के साथ, आपके पास होगा git branch -c A B। देखें नीचे मेरा उत्तर
VonC

जवाबों:


445
git checkout old_branch
git branch new_branch

यह आपको एक नई शाखा "new_branch" देगा जो उसी राज्य के साथ "old_branch" होगी।

इस आदेश को निम्नलिखित में जोड़ा जा सकता है:

git checkout -b new_branch old_branch

134
या उससे भी कम git checkout -b new_branch(जब आप पहले से हो old_branch)।
कोराकटोर

4
यह सिर्फ नई शाखा का निर्माण कर रहा है लेकिन एक शाखा से दूसरी शाखा में सामग्री की प्रतिलिपि बनाने में सक्षम नहीं है। जब मैं इस आदेश की कोशिश कर रहा हूँ तो यह दिखा रहा है कि "**** नामक शाखा पहले से मौजूद है"।
अनूप

7
मुझे लगता है कि अगर कोई इस तरह की एक नई शाखा बनाता है, तो उसके पास पुरानी शाखा की एक प्रति नहीं होती है, लेकिन पुरानी शाखा के प्रमुख पर एक नया सूचक होता है। लेकिन जब आप अब नई शाखा को रिबास करने जैसा कुछ करते हैं तो आपको यह देखना चाहिए कि पुरानी शाखा अभी भी अपनी मूल स्थिति में है जबकि नई शाखा को संशोधित किया गया है। इसलिए मुझे लगता है कि ओपी क्या चाहता है।
uli_1973

1
git checkout old_branch और git शाखा new_branch की तुलना में .... इसका उत्पादन पर कमांड के ऊपर उपयोग करने के लिए बेहतर है, क्योंकि नीचे कमांड नई शाखा बनाएगी और आपको नई शाखा (नई शाखा के रूप में परिवर्तन शाखा) में ले जाएगी .... git checkout -b new_branch old_branch
किरण

एक शाखा को अधिलेखित करने के लिए, stackoverflow.com/questions/26961371/…
MCCCS

55
git branch copyOfMyBranch MyBranch

यह संभावित समय लेने वाली और एक शाखा की जाँच के अनावश्यक कार्य से बचा जाता है। याद रखें कि एक चेकआउट "वर्किंग ट्री" को संशोधित करता है, जो कि लंबे समय तक ले सकता है यदि यह बड़ा है या इसमें बड़ी फाइलें (चित्र या वीडियो, उदाहरण के लिए) हैं।


1
बेशक, अगर आपके पास git में बाइनरी फाइलें हैं, विशेष रूप से बड़े वाले, तो उक्त फाइलों के लिए आपकी रणनीति का विश्लेषण करना सार्थक होगा। स्वाभाविक रूप से, असामान्य मामले मौजूद होंगे और जीआईटी में बाइनरी फाइलें पूरी तरह से स्वीकार्य होंगी।
आदरणीय

52

Git 2.15 (Q4 2017) के साथ, " git branch" सीखा " -c/-C" एक मौजूदा को कॉपी करके एक नई शाखा बनाने के लिए।

देखें प्रतिबद्ध c8b2cec (18 जून 2017) द्वारा Ævar Arnfjörð Bjarmason ( avar)
देखें 52d59cc प्रतिबद्ध , 5463caa प्रतिबद्ध द्वारा (18 जून 2017) साहिल दुआ ( sahildua2305)
(द्वारा विलय Junio सी Hamano - gitster- में प्रतिबद्ध 3b48045 , 03 अक्टू 2017)

branch: एक जोड़ने --copy( -cसाथ जाने के लिए) विकल्प --move( -m)

--copyएक शाखा और उसके रिफ्लॉग और कॉन्फ़िगरेशन की क्षमता को जोड़ें , यह उसी अंतर्निहित मशीनरी का उपयोग करता है जैसे --move( -m) विकल्प को छोड़ कर रिफ्लेग और कॉन्फ़िगरेशन को स्थानांतरित करने के बजाय कॉपी किया जाता है।

यह एक विषय शाखा को नए संस्करण में कॉपी करने के लिए उदाहरण के लिए उपयोगी है, उदाहरण के workलिए विषय को सूची में work-2सबमिट करने के बाद work, सभी ट्रैकिंग जानकारी और अन्य कॉन्फ़िगरेशन को संरक्षित करते हुए, जो शाखा के साथ जाती है, और इसके विपरीत --moveअन्य पहले से ही प्रस्तुत शाखा को रखने के लिए। संदर्भ।

नोट: किसी शाखा की नकल करते समय, आप अपनी वर्तमान शाखा पर बने रहते हैं।
जैसा कि जूनियो सी हमानो बताते हैं:

वर्तमान शाखा होने वाली Bशाखा की नकल करके एक नई शाखा बनाते समय A, यह HEADनई शाखा को इंगित करने के लिए भी अद्यतन करता है।
इसे संभवत: इस तरह बनाया गया था क्योंकि " git branch -c A B" पिग्गीबैक ने इसके कार्यान्वयन को " git branch -m A B",

यह सामान्य अपेक्षा से मेल नहीं खाता है।
यदि मैं एक नीली कुर्सी पर बैठा था, और कोई व्यक्ति आता है और उसे लाल रंग से रंगता है, तो मैं उस कुर्सी पर बैठना स्वीकार करूंगा जो अब लाल है (मैं भी खड़ा होना ठीक हूं, इसके बजाय, अब मेरी पसंदीदा नीली कुर्सी नहीं है )।

लेकिन अगर कोई नई लाल कुर्सी बनाता है, तो मैं जिस नीली कुर्सी पर बैठा हूं, उसके बाद वह मॉडलिंग करता है, मुझे उम्मीद नहीं है कि वह नीली कुर्सी से बूट हो जाएगा और नए लाल पर बैठने पर समाप्त होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.