2012-09-22 12 views
49

मेरे पास दो असंबद्ध शाखाओं, मास्टर और कॉन्फ़िगरेशन के साथ गिट रेपो है। मैंने कॉन्फ़िगरेशन बनाए हैं, सभी फ़ाइलों को शुद्ध किया है और फिर केवल कॉन्फ़िगरेशन फ़ाइलों में रखा है। अब मैं इसे रिमोट रेपो पर धक्का देना चाहता हूं, लेकिन क्योंकि यह नई, खाली शाखा थी (मेरे सभी परिवर्तनों के लॉग और मूल शाखा के पुराने संशोधन के बिना)।इतिहास के बिना नई शाखा को कैसे धक्का दें

मैं सभी इतिहास को कैसे शुद्ध कर सकता हूं और इसे धक्का दे सकता हूं?

+3

यह बहुत जैसा दिखता है: http://stackoverflow.com/questions/1384325/in-git-is-there-a-simple-way-of-introducing-an-unrelated-branch-to -ए-रिपोजिटरी – Mark

+0

@ मार्क धन्यवाद, जो मुझे चाहिए वह करता है। – AoeAoe

उत्तर

100

सभी फ़ाइलों को पर्ज करना इतिहास से छुटकारा नहीं मिलता है। आपको ऐसी शाखा बनाने की आवश्यकता है जिसमें पहले कोई इतिहास न हो, और अपनी कॉन्फ़िगरेशन फ़ाइलें जोड़ें। इन दिनों git checkout में --orphan विकल्प है जो कोई इतिहास नहीं है। यहाँ --orphan विकल्प के बारे में जानकारी है:

--orphan < new_branch>

एक नया अनाथ शाखा, < new_branch> नामित बनाएँ, < start_point से शुरू> और यह के लिए स्विच। इस नई शाखा में किए गए पहले प्रतिबद्धता में कोई माता-पिता नहीं होंगे और यह सभी अन्य शाखाओं और प्रतिबद्धताओं से पूरी तरह से डिस्कनेक्ट होने वाले नए इतिहास की जड़ होगी।

इंडेक्स और काम करने वाले पेड़ को समायोजित किया गया है जैसे कि आपने पहले "गिट चेकआउट < start_point>" चलाया था। यह आपको एक नया इतिहास शुरू करने की अनुमति देता है जो रूट प्रतिबद्ध बनाने के लिए आसानी से "गिट प्रतिबद्ध-ए" चलाकर < start_point> के समान पथों का एक सेट रिकॉर्ड करता है।

यह उपयोगी हो सकता है जब आप अपने पूर्ण इतिहास को उजागर किए बिना पेड़ को एक प्रतिबद्धता से प्रकाशित करना चाहते हैं। हो सकता है कि आप ऐसा प्रोजेक्ट की ओपन सोर्स शाखा प्रकाशित करने के लिए ऐसा करना चाहें जिसका वर्तमान पेड़ "साफ" है, लेकिन जिसका पूरा इतिहास मालिकाना या अन्यथा कोड के समेकित बिट्स शामिल है।

यदि आप डिस्कनेक्ट किए गए इतिहास को शुरू करना चाहते हैं जो < start_point> में से एक से अलग पथों का एक सेट रिकॉर्ड करता है, तो आपको "गिट" चलाकर अनाथ शाखा बनाने के तुरंत बाद इंडेक्स और कार्य करने वाले पेड़ को साफ़ करना चाहिए आरएम-आरएफ। " काम करने वाले पेड़ के शीर्ष स्तर से। इसके बाद आप अपने नए फ़ाइलों तैयार करने के लिए, काम कर पेड़ repopulating तैयार हो जाएगा, कहीं और से उन्हें कॉपी करने एक टारबॉल निकालने, आदि

यहाँ checkout के लिए दस्तावेज़ का लिंक है द्वारा। आप git help checkout भी चला सकते हैं।

एक बार जब आप इतिहास के बिना अपनी शाखा बना लेते हैं, तो जब आप इसे सर्वर पर दबाते हैं, तो उसके पास यह इतिहास भी नहीं होगा। एफडब्ल्यूआईडब्लू, यह मुझे git push के बारे में सोचने में मदद करता है क्योंकि "रिमोट शाखा को मेरे स्थानीय के समान दिखता है"। तो यदि आपके पास इतिहास है, और धक्का है, तो इसका इतिहास होगा। यदि आप नहीं करते हैं, तो धक्का शाखा नहीं होगी।

13

मुझे निजी जानकारी साझा किए बिना या मेरा इतिहास हटाने के बिना कुछ कोड भेजने के लिए ऐसा करने की आवश्यकता थी।

यदि आप में से कोई भी SourceTree का उपयोग कर रहा है, तो इस तरह मैं इसे करने में कामयाब रहा। कृपया मुझे बताएं कि मैंने कुछ गलत किया है या कुछ भूल रहा हूं क्योंकि मैं स्रोत नियंत्रण प्रबंधन से बहुत अपरिचित हूं।

  1. मैं स्रोत पेड़ पर टर्मिनल बटन पर गया।
  2. मैं आदेश का उपयोग करके एक नया 'अनाथ' शाखा बनाया: 'Git चेकआउट --orphan साफ-ver' जहां साफ-ver मेरी शाखा का नाम
  3. है मैं टर्मिनल बंद कर दिया और देखा कि मेरे लिए प्रतिबद्ध लॉग मुक्त कर दिया गया क्योंकि मैं एक नई अनाथ शाखा में था। मैंने अपने सभी स्रोत कोड का मंचन किया और परिवर्तन किए।
  4. मैंने अपने बिटबकेट रिपॉजिटरी को किसी भी भंडार में सेट किया है> रिमोट या रिपोजिटरी> रिपोजिटरी सेटिंग्स> जोड़ें।
  5. मैंने इसे बंद कर दिया, और पुश बटन
  6. पर क्लिक किया मैंने अपनी नई 'क्लीन-वर्क' शाखा का चयन ठीक कहा।

जब मैंने बिटबकेट की जांच की, ऐसा लगता है कि ऐसा लगता है कि यह मेरे प्रतिबद्ध इतिहास को काम करता है और त्याग देता है।

उम्मीद है कि यह किसी की मदद करेगा।

11

मैं सभी इतिहास को कैसे शुद्ध कर सकता हूं और इसे धक्का दे सकता हूं?

git checkout --orphan <name_you_choose_for_orphan_branch> 
git commit 

तो फिर आप अपने

git push <remote-name> <branch-name> 


cf. चला सकते हैं this one-liner

संबंधित मुद्दे