2011-12-06 11 views
7

मेरी समस्या: https: // URL का उपयोग करते समय साइगविन गिट प्रमाण-पत्रों के लिए सही ढंग से संकेत नहीं प्रतीत होता है, इसलिए मैंने URL में उपयोगकर्ता नाम और पासवर्ड का उपयोग किया। दुर्भाग्यवश जब मैंने "पुल पा लिया" तो यह पासवर्ड सहित पूर्ण यूआरएल के साथ एक संदेश को स्वत: प्रतिबद्ध कर दिया। जब तक मैंने परिवर्तनों को धक्का दिया था तब तक मैंने यह ध्यान नहीं दिया।मैं प्रतिबद्ध लॉग से अपना पासवर्ड निकालने के लिए पिछली गिट कैसे संपादित करूं?

मैं URL में पासवर्ड को समाप्त करने के लिए पुराने प्रतिबद्ध संदेशों को कैसे संपादित करूं?

मेरा साझा गिट रेपो मेरे अपने सर्वर पर है। यदि आवश्यक हो तो मैं रिपो पर सर्जरी कर सकता हूं।

मेरी कॉन्फ़िगरेशन को बदलने के निर्देश (यानी साइगविन का उपयोग न करें, https का उपयोग न करें) अनावश्यक हैं - मैं पहले से किए गए कार्यों से निपटने की कोशिश कर रहा हूं।

हाँ, मैं पासवर्ड जला सकता हूं और कर दूंगा लेकिन मैं अभी भी इसे ठीक करना चाहता हूं।

+0

[यहां देखें] (http://www-cs-students.stanford.edu/~blynn/gitmagic/ch05.html)। – alex

उत्तर

1

गिट-हब पर संवेदनशील डेटा को हटाने का लिंक उपयोगी होने से पहले रेपो खींच नहीं सकते हैं। हालांकि, मुझे एक उपकरण मिला जो बहुत उपयोग करने के लिए सीधे-फॉरवर्ड था: एरिक रेमंड reposurgeon

इस टूल ने मुझे आसानी से अपना रेपो आयात करने की अनुमति दी, इस मुद्दे के साथ काम करने की सूची दी, उन्हें संपादित किया (मैंने व्यक्तिगत रूप से ऐसा किया) और मेरे रेपो की एक गिट फास्ट-आयात स्ट्रीम लिख दी। मैंने उस स्ट्रीम को एक नए रेपो में आयात किया और इसे जगह में rsync'd किया।

नकारात्मकता यह है कि मेरा पुराना रेपो पूरी तरह से मर चुका है - मैंने इतिहास बदल दिया। दस्तावेज़ों के मुताबिक, "गिट फिल्टर-शाखा" का उपयोग करने के बारे में भी यह सच होगा।

+1

थोड़ी देर के लिए टूल का उपयोग करने का बहाना ढूंढ रहा था, लेकिन दस्तावेज़ बहुत ही अनिश्चित हैं- कोई उदाहरण नहीं। Reposurgeon के साथ "केवल एक डार्न फ़ाइल हटाएं" का उदाहरण होना अच्छा लगता है। – cmc

4

एक गिट भंडार और उसके इतिहास से पूरी तरह से फ़ाइल को निकालने के लिए, इन आदेशों का उपयोग करें।

# Check out the remote repo 
git clone git://host/path/repo.git 
cd repo 

# Clobber the file in your checkout 
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch file-to-purge.txt' --prune empty --tag-name-filter cat -- --all 

# Make sure you don't accidentally commit the file again 
echo file-to-purge.txt >> .gitignore 
git add .gitignore 
git commit -m "Prevent accidentally committing this again" .gitignore 

# Push the edited repo. This will break other people's clones, if any. 
git push origin master --force 

अधिक जानकारी के लिए GitHub पर remove sensitive data गाइड में मदद मिलेगी।

0

यदि आप सर्वर को संपादित कर सकते हैं, तो आप शाखा के सिर को पिछले एक (HEAD ^) पर रीसेट कर सकते हैं।

  • सबसे पहले, HEAD^हैश प्राप्त करें जिसे आप "वापस" करना चाहते हैं।
  • रीसेट करने के लिए "echo (हैश)> (शाखा नाम)" चलाएं, उपयोगकर्ता गिट (या किसी भी गिट परोसता है) में बदलें, उपयोगकर्ता गिट (या किसी भी गिट परोसता है) में बदलें (गिट नंगे रिपोजिटरी की निर्देशिका सर्वर)/refs/head पर जाएं।

यह सब कुछ है। बीटीडब्लू, आप उपरोक्त

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