सभी कमिट्स को हटाने के लिए एक रिमोट गिट रिपॉजिटरी को कैसे रीसेट करें?


164

मैं सभी कमियों को दूर करने के लिए एक दूरस्थ और स्थानीय गिट रिपॉजिटरी कैसे रीसेट कर सकता हूं?

मैं आरंभिक प्रतिबद्ध के रूप में वर्तमान प्रमुख के साथ नए सिरे से शुरुआत करना चाहूंगा।



मैं चेरी लेने या कुछ और नहीं करना चाहता, मैं सिर्फ सभी बदलावों को दूर करना चाहता हूं और सार्वजनिक रेपो को भी रीसेट करना चाहता हूं। जैसा कि मैं नया Git उपयोगकर्ता हूं, मैंने कुछ गलत तरीके किए हैं। हटाना .GIT निर्देशिका कोई विकल्प नहीं है क्योंकि सार्वजनिक रिपॉजिटरी भी है।
प्रियांक बोलिया

आप एक बल पुश भी कर सकते हैं, इसलिए .it dir को हटाना वास्तव में एक विकल्प है।
लीलिथ नदी

2
सिर्फ नाइटपैकिंग, लेकिन "संशोधन" एक svn शब्दावली है और एक पेड़ के आकार के इतिहास में बहुत मतलब नहीं है।
तमसे सजेलेई

2
@ तमस्सगेलेई "रिविजन" "कमिट" के लिए पूरी तरह स्वीकार्य पर्याय है। यह प्रो Git पुस्तक (जैसे दोनों में प्रयोग किया जाता है यहाँ ) और Git आदमी पन्नों में।
जुबब्स

जवाबों:


348

पूरी तरह से रीसेट?

  1. .gitनिर्देशिका को स्थानीय रूप से हटाएँ ।

  2. गिट रिपॉजिटरी को फिर से बनाएँ:

    $ cd (project-directory)
    $ git init
    $ (add some files)
    $ git add .
    $ git commit -m 'Initial commit'
    
  3. ओवरराइटिंग करने के लिए रिमोट सर्वर पर पुश करें। याद रखें कि आप ऐसा करने के लिए हर किसी को गड़बड़ करने जा रहे हैं ... आप बेहतर ग्राहक हैं।

    $ git remote add origin <url>
    $ git push --force --set-upstream origin master
    

1
लेकिन कमिट चले गए हैं, और रिपॉजिटरी रीसेट हो गई है। क्या हम उन पिछले संदेशों को भी फाइलनामों के सामने हटा सकते हैं।
प्रियांक बोलिया

2
GitHub पर सीधे दूरस्थ रिपॉजिटरी निकालें और इसे फिर से बनाएँ।
बॉम्बे

1
Git push -force के बजाय git पुश --force होना चाहिए
William Notowidagdo

6
यदि आप अपनी "आरंभिक कमेटी" में कोई फाइल नहीं करना चाहते हैं, तो आप बस किसी भी फाइल को नहीं जोड़ सकते हैं, और --allow-emptyअंत में झंडा जोड़ सकते हैं git commit -m 'Initial commit'
रफ

2
Git 2.3.2 का उपयोग करते हुए, मुझे उपयोग करना था git push --force --set-upstream origin masterलेकिन बाकी सभी वर्णित के रूप में काम कर रहे थे
Sébastien Stormacq

6

सबसे पहले, इस प्रश्न में दिए गए निर्देशों का पालन करते हुए सब कुछ एक ही वचन में करें। फिर रिमोट से जबरन धक्का दें:

$ git push origin +master

और वैकल्पिक रूप से स्थानीय और दूरस्थ रूप से सभी अन्य शाखाओं को हटा दें:

$ git push origin :<branch>
$ git branch -d <branch>

0

क्या आप थे मैं ऐसा कुछ करूंगा:

कुछ भी करने से पहले कृपया एक प्रति (क्षमा से बेहतर सुरक्षित) रखें

git checkout master
git checkout -b temp 
git reset --hard <sha-1 of your first commit> 
git add .
git commit -m 'Squash all commits in single one'
git push origin temp

ऐसा करने के बाद आप अन्य शाखाओं को हटा सकते हैं।

परिणाम: आपके पास केवल 2 कमिट्स के साथ एक शाखा होने वाली है।

का प्रयोग करें git log --onelineएक minimalistic तरीके से अपने को देखने के लिए प्रतिबद्ध है और प्रतिबद्ध के लिए SHA-1 को खोजने के लिए!

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