2012-10-01 15 views
10

मैं साथगिट क्लोन रिपोजिटरी के लिए "रीसेट" कमांड क्या है?

git clone <address> 

मैं कुछ संशोधन किया है और कुछ फ़ाइलों को संपादित किया है भंडार डाउनलोड किया है, अब मैं सब कुछ त्यागने के लिए और बस सुनिश्चित करने के लिए चाहते हैं कि मैं क्या डिस्क पर है मूल रिमोट की तुलना में और कुछ भी नहीं है कोडबेस का संस्करण: सही आदेश क्या है?

उत्तर

11

दूरस्थ मान लिया जाये कि मूल कहा जाता है

git reset --hard HEAD 
git checkout origin/master 
git branch -D master 
git checkout -b master 

क्या करता है:

  1. (वैकल्पिक Git स्थिति दर्शाती है कि अगर कोई संशोधित फ़ाइलों) डिस्क पर किसी भी संशोधित फ़ाइलों त्यागें (यही कारण है कि reset --hard है)

  2. रिमोट मास्टर शाखा चेकआउट (नोट: आप "डिटेक्टेड हेड" राज्य में होंगे)

  3. स्थानीय master शाखा हटाएँ

  4. कॉल नई master शाखा

अब आप शायद कुछ अलग करना चाहते हैं ... यानी के रूप में वर्तमान प्रधान (अपने सभी स्थानीय परिवर्तन दूर फेंक) अपने परिवर्तनों को फेंक न दें, बस उन्हें एक और नामित शाखा पर रखें ...सब के बाद आप कभी पता नहीं जब आप उन्हें फिर से

git checkout -b my-silly-changes 
git branch -D master 
git checkout -b master origin/master 

my-silly-changes नामक एक नया स्थानीय शाखा में अपने वर्तमान परिवर्तनों को सहेजता है और उसके बाद वर्ष स्थानीय शाखा master कहा जाता है को हटा यही कारण है कि आवश्यकता होगी और अंत में दूरदराज के सिर से यह पुन।

git branch --set-upstream-to=origin/master master

कहाँ:

origin/master

दूरस्थ शाखा आप ध्यान खींचना चाहते हैं है, और

master

+6

आपको सभी अनचाहे फ़ाइलों (उत्पादों का निर्माण इत्यादि) से छुटकारा पाने के लिए 'गिट क्लीन-एक्सएफडी' भी करना चाहिए –

+0

ठंडा उस –

+2

के बारे में नहीं पता था, जबकि पहले चार कमांड, सही होने पर, अनिवार्य रूप से वर्बोज़ हैं। यदि आप 'मास्टर' पर हैं, तो बस 'गिट रीसेट - हार्ड मूल/मास्टर' चार कमांड के समान ही होगा। फिर भी, स्थानीय शाखा बनाने के विकल्प का उल्लेख करने के लिए +1। – sleske

0

यदि आपने कुछ भी नहीं किया है, तो git reset --hard बस पर्याप्त है।

Here एक अच्छा संसाधन है जो बताता है कि कैसे गिट रीसेट अपने विभिन्न मोड काम (--हार्ड, - मिश्रित और - सॉफ्ट) के साथ रीसेट करता है।

अस्वीकरण:

git reset --hard एक असुरक्षित ऑपरेशन है। यह काम करने वाले पेड़ से किसी भी अपरिवर्तित परिवर्तन को हटा देता है, और इसे पूर्ववत नहीं किया जा सकता है।

+0

* से काम करना चाहते हैं * "मैं सब कुछ त्यागना चाहता हूं और बस यह सुनिश्चित कर लें कि डिस्क पर जो कुछ है वह कोडबेस के मूल रिमोट संस्करण से कुछ और नहीं है" * - ऊपर दी गई विधि फ़ाइल सिस्टम पर फ़ाइलों को छोड़ दें जो क्लोन का हिस्सा नहीं थे, जैसे 'config.ac' से' autoreconf' 'से उत्पन्न' कॉन्फ़िगरेशन 'स्क्रिप्ट्स। इसे एक साधारण कार्य करने के लिए गिट को छोड़ दें, और इसे असंभव बनाना मुश्किल हो जाता है। – jww

1

क्या आप वाकई में सभी फाइलों को अभी नहीं करना चाहते हैं, तो और अपने सभी संशोधनों खो देते हैं, आप कर सकते हैं (!):

git reset --hard origin/master 

यह "मास्टर की अपनी स्थानीय प्रतिलिपि के राज्य को रीसेट कर देगा "शाखा और आपकी कार्यशील प्रतिलिपि जो आपके अपस्ट्रीम (मूल रिमोट) से लाए गए अंतिम संस्करण में है।

नोट: यह मानता है कि

  • आपके अपस्ट्रीम भंडार "मूल" (git clone के लिए डिफ़ॉल्ट)
  • आप दूरस्थ master शाखा

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

git reset --hard origin/branch1 
-1

तुम भी के लिए कुछ सदृश करने के लिए आवश्यकता हो सकती है

वह स्थानीय शाखा है जिसे आप