इतिहास के बिना नई शाखा को कैसे आगे बढ़ाया जाए


95

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

मैं पूरे इतिहास को कैसे शुद्ध कर सकता हूं और इसे आगे बढ़ा सकता हूं?


3
यह बहुत समान दिखता है: stackoverflow.com/questions/1384325/…
मार्क

जवाबों:


157

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

- बोरहान <new_branch>

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

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

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

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

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

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


37

मैं पूरे इतिहास को कैसे शुद्ध कर सकता हूं और इसे आगे बढ़ा सकता हूं?

git checkout --orphan <name_you_choose_for_orphan_branch>
git commit

फिर आप अपने चला सकते हैं

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


सीएफ यह एक लाइनर है


16

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

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

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

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

आशा है कि यह किसी को मदद करता है।

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