दिलचस्प पोस्ट
स्टार्टअप पर शेल स्क्रिप्ट को चलाने के लिए Tensorflow में केवल पायथन के साथ एक कस्टम सक्रियण फ़ंक्शन कैसे बना सकता है? SQL सर्वर चुपचाप varchar की संग्रहीत कार्यविधियों में छंटनी करता है पायथन में सूची से आप अनन्य संख्याओं की "x" संख्या कैसे चुनते हैं? वेबव्यू में फ़ाइल अपलोड करें एंड्रॉइड एक्सपेंडेबललिस्टव्यू – एक ट्यूटोरियल की तलाश जावास्क्रिप्ट में कस्टम सॉर्ट फ़ंक्शन को कैसे परिभाषित करें? एक UIPickerView की चयन पट्टी में निश्चित लेबल जावा का उपयोग करके लाइन से एक बड़ी टेक्स्ट फ़ाइल लाइन कैसे पढ़ी जा सकती है? क्रोम डेवलपमेंट टूल: जावास्क्रिप्ट से फाइल सभी ग्राहकों को एक संदेश भेजा जा रहा है (क्लाइंट – सर्वर संचार) UIScrollView स्क्रॉल सामग्री आकार अस्पष्टता ggplot अलग किंवदंती और साजिश Virtualenv के साथ विभिन्न पायथन संस्करण का उपयोग करें WHOIS API कौन प्रदान करता है?

मैं गीट प्रबंधित परियोजना में सभी स्थानीय परिवर्तनों को पिछले स्थिति में कैसे वापस कर सकता हूं?

मेरे पास एक प्रोजेक्ट है जिसमें मैं git init चलाता था। कई प्रतिबद्धता के बाद, मैंने git status था, जिसने मुझे बताया था कि सब कुछ अब तक हुआ था और कोई भी स्थानीय परिवर्तन नहीं थे।

फिर मैंने कई लगातार बदलाव किए और मुझे एहसास हुआ कि मैं सब कुछ दूर फेंकना चाहता हूं और अपने मूल राज्य में वापस जाना चाहता हूं। क्या यह आदेश मेरे लिए ऐसा करेगा?

 git reset --hard HEAD 

वेब के समाधान से एकत्रित समाधान "मैं गीट प्रबंधित परियोजना में सभी स्थानीय परिवर्तनों को पिछले स्थिति में कैसे वापस कर सकता हूं?"

यदि आप अपनी कार्यशील प्रतिलिपि में किए गए परिवर्तनों को वापस करना चाहते हैं, तो ऐसा करें:

 git checkout . 

यदि आप सूचकांक में किए गए परिवर्तनों को वापस करना चाहते हैं (यानी, आपने जोड़ी है), ऐसा करें यह चेतावनी, आपके सभी निपुण कमेट्स को मास्टर करने के लिए रीसेट कर देगा! :

 git reset 

यदि आप जो परिवर्तन किए हैं, उसे वापस करना चाहते हैं, तो ऐसा करें:

 git revert <commit 1> <commit 2> 

यदि आप अनट्रेक्टेड फ़ाइलों को निकालना चाहते हैं (उदाहरण के लिए, नई फ़ाइलें, जेनरेट की गई फ़ाइलें):

 git clean -f 

या अनट्रेक निर्देशिका (जैसे, नई या स्वत: उत्पन्न निर्देशिका):

 git clean -fd 

नोट: आप भी भागना चाह सकते हैं

 git clean -fd 

जैसा

 git reset --hard 

अनुपट्रित फाइलों को नहीं हटाएगा, जहां git-clean ट्रैक की गई रूट निर्देशिका से कोई भी फाइल निकाल देगा जो कि जीआईटी ट्रैकिंग के अंतर्गत नहीं हैं चेतावनी – इस के साथ सावधान रहें! यह देखने के लिए कि यह क्या नष्ट हो जाएगा, पहले git-clean के साथ एक सूखी-रन चलाने के लिए उपयोगी है।

यह तब भी उपयोगी होता है जब आपको त्रुटि संदेश मिलता है

 ~"performing this command will cause an un-tracked file to be overwritten" 

जो कई चीजें करते समय हो सकता है, जब आप और आपके मित्र दोनों ने एक ही नाम की एक नई फाइल जोड़ दी है, तो एक काम की प्रतिलिपि अद्यतन कर रहा है, लेकिन उसने इसे पहले स्रोत नियंत्रण में बांटा है, और आप अपनी अनचाहे कॉपी को हटाने के बारे में परवाह नहीं करते हैं ।

इस स्थिति में, एक ड्राई रन करने से आपको फाइलों की एक सूची दिखाने में मदद मिलेगी जो ओवरराइट की जाएगी।

Git-reflog में देखें यह उन सभी राज्यों को सूचीबद्ध करेगा जिनकी याद है (डिफ़ॉल्ट 30 दिन है), और आप बस एक को चेक कर सकते हैं। उदाहरण के लिए:

 $ git init > /dev/null $ touch a $ git add . $ git commit -m"Add file a" > /dev/null $ echo 'foo' >> a $ git commit -a -m"Append foo to a" > /dev/null $ for i in bcde; do echo $i >>a; git commit -a -m"Append $i to a" ;done > /dev/null $ git reset --hard HEAD^^ > /dev/null $ cat a foo b c $ git reflog 145c322 HEAD@{0}: HEAD^^: updating HEAD ae7c2b3 HEAD@{1}: commit: Append e to a fdf2c5e HEAD@{2}: commit: Append d to a 145c322 HEAD@{3}: commit: Append c to a 363e22a HEAD@{4}: commit: Append b to a fa26c43 HEAD@{5}: commit: Append foo to a 0a392a5 HEAD@{6}: commit (initial): Add file a $ git reset --hard HEAD@{2} HEAD is now at fdf2c5e Append d to a $ cat a foo b c d 

यदि आप सभी परिवर्तनों को वापस लेना चाहते हैं और वर्तमान दूरस्थ मास्टर के साथ-साथ अद्यतित करना चाहते हैं (उदाहरण के लिए आप पाते हैं कि मास्टर प्रमुख आगे बढ़े हैं, क्योंकि आपने इसे हटा दिया है और आपका पुश 'अस्वीकार कर दिया गया है') आप उपयोग कर सकते हैं

 git fetch # will fetch the latest changes on the remote git reset --hard origin/master # will set your local branch to match the representation of the remote just pulled down. 

खतरे के पीछे: (कृपया टिप्पणियां पढ़ें। मेरे उत्तर में प्रस्तावित आदेश को निष्पादित करने से आप जितना चाहें उतना हटा सकते हैं)

पूरी तरह से उन सभी निर्देशिकाओं को हटाने के लिए जिनकी मुझे चलाने की जरूरत थी I

 git clean -f -d 

जवाबों का एक गुच्छा पढ़ने और कोशिश करने के बाद, मैंने कई किनारे वाले मामलों का पता लगाया है, जिसका मतलब है कि कभी-कभी वे काम की प्रति पूरी तरह से साफ नहीं करते हैं

यह करने के लिए मेरी वर्तमान बाश स्क्रिप्ट है, जो हर समय काम करता है।

 #!/bin/sh git reset --hard git clean -f -d git checkout -- HEAD 

काम की नकल रूट निर्देशिका से भागो।

मुझे एक समान समस्या मिली रिमोट से स्थानीय प्रतिबद्ध का कौन सा संस्करण अलग है यह देखने के लिए git log का उपयोग करने का समाधान है (उदाहरण के संस्करण 3c74a11530697214cbcc4b7b98bf7a65952a34ec ) है।

फिर बदलाव को वापस करने के लिए git reset --hard 3c74a11530697214cbcc4b7b98bf7a65952a34ec का उपयोग करें।

बस कहना है

 git stash 

यह आपके सभी स्थानीय पागे को निकाल देगा। और आप बाद में कहकर कह सकते हैं

 git stash apply 

पुन: क्लोन

 GIT=$(git rev-parse --show-toplevel) cd $GIT/.. rm -rf $GIT git clone ... 
  • Delete स्थानीय, गैर-पुश किए गए कमिट को हटा देता है
  • To ट्रैक किए गए फ़ाइलों में आपके द्वारा किए गए परिवर्तनों को बदल देता है
  • ✅ आपके द्वारा हटाए गए फ़ाइलों को पुनर्स्थापित करता है
  • In। गितग्नोर में सूचीबद्ध फाइलें / डायर .gitignore (जैसे फ़ाइलें बनाना)
  • Es फाइलें / डाइर्स हटाए जाते हैं जो ट्रैक नहीं किए जाते हैं और .gitignore में नहीं हैं
  • 😀 आप इस दृष्टिकोण को भूल नहीं करेंगे I
  • 😔 बर्बाद बैंडविड्थ

निम्नलिखित अन्य आज्ञाएं हैं I दैनिक भूल जाते हैं I

साफ और रीसेट करें

 git clean -f -d -x git reset --hard 
  • ❌ स्थानीय, गैर-पुश किए गए कमानों को हटा नहीं करता है
  • To ट्रैक किए गए फ़ाइलों में आपके द्वारा किए गए परिवर्तनों को बदल देता है
  • ✅ आपके द्वारा हटाए गए फ़ाइलों को पुनर्स्थापित करता है
  • In। गितग्नोर में सूचीबद्ध फाइलें / डायर .gitignore (जैसे फ़ाइलें बनाना)
  • Es फाइलें / डाइर्स हटाए जाते हैं जो ट्रैक नहीं किए जाते हैं और .gitignore में नहीं हैं

स्वच्छ

 git clean -f -d -x 
  • ❌ स्थानीय, गैर-पुश किए गए कमानों को हटा नहीं करता है
  • ❌ ट्रैक किए गए फ़ाइलों में किए गए परिवर्तनों को वापस नहीं किया जाता है
  • ❌ ट्रैक किए गए फ़ाइलों को आपके द्वारा हटाए जाने पर पुनर्स्थापित नहीं करता है
  • In। गितग्नोर में सूचीबद्ध फाइलें / डायर .gitignore (जैसे फ़ाइलें बनाना)
  • Es फाइलें / डाइर्स हटाए जाते हैं जो ट्रैक नहीं किए जाते हैं और .gitignore में नहीं हैं

रीसेट

 git reset --hard 
  • ❌ स्थानीय, गैर-पुश किए गए कमानों को हटा नहीं करता है
  • To ट्रैक किए गए फ़ाइलों में आपके द्वारा किए गए परिवर्तनों को बदल देता है
  • ✅ आपके द्वारा हटाए गए फ़ाइलों को पुनर्स्थापित करता है
  • In। गितग्नोर में सूचीबद्ध फाइलें / डायर .gitignore (जैसे फ़ाइलें बनाना)
  • ❌ फ़ाइलें / डियर को ट्रैक नहीं करता जो कि ट्रैक नहीं किए जाते हैं और न कि .gitignore

टिप्पणियाँ

उपरोक्त सभी की पुष्टि करने के लिए टेस्ट केस (बाश या श का उपयोग करें):

 mkdir project cd project git init echo '*.built' > .gitignore echo 'CODE' > a.sourceCode mkdir b echo 'CODE' > b/b.sourceCode cp -rbc git add . git commit -m 'Initial checkin' echo 'NEW FEATURE' >> a.sourceCode cp a.sourceCode a.built rm -rf c echo 'CODE' > 'd.sourceCode' 

यह भी देखें

  • git revert नई प्रतिबद्धता बनाने के लिए git revert लौटती है जो पहले किये गये बदलावों को वापस करता है
  • पहले कटौती के लिए समय में वापस जाने के लिए git checkout (पहले से ऊपर दिए गए आदेशों को चलाने की आवश्यकता हो सकती है)
  • git stash रूप में उसी के समान है, लेकिन आप इसे पूर्ववत कर सकते हैं

आप जरूरी नहीं चाहते कि आप अपने कार्य / निर्देशिका को अपने कामकाजी डायरेक्टरी में छिपाने की ज़रूरत पड़े, लेकिन इसके बजाय उन्हें पूरी तरह से छुटकारा पाएं। git clean कमांड को आपके लिए यह करना होगा।

ऐसा करने के लिए कुछ सामान्य उपयोग के मामले मर्ज या बाह्य उपकरणों से उत्पन्न क्र्रिप्ट को हटाने या अन्य फ़ाइलों को निकालने के लिए होगा ताकि आप एक स्वच्छ बिल्ड चला सकें।

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

git stash --all

जो सब कुछ निकाल देगा, लेकिन यह एक छिपाने की जगह में सभी को बचाने के लिए इस छिपाने की जगह बाद में इस्तेमाल किया जा सकता है

हालांकि, अगर आप वास्तव में सभी फाइलें हटाना चाहते हैं और अपनी कार्यशील निर्देशिका को साफ करना चाहते हैं, तो आपको निष्पादित करना चाहिए

git clean -f -d

यह किसी भी फाइल को निकाल देगा और कोई भी सब-डायरेक्टर्स, जिसके पास कमांड के परिणाम के रूप में कोई वस्तु नहीं है। git clean -f -d कमांड को निष्पादित करने से पहले एक स्मार्ट चीज को चलाना है

 git clean -f -d -n 

जो आपको git clean -f -d निष्पादित करने के बाद क्या हटाया जाएगा का एक पूर्वावलोकन दिखाएगा

तो यहां आपके विकल्पों का सारांश सबसे आक्रामक से कम से कम आक्रामक है


विकल्प 1 : स्थानीय रूप से सभी फ़ाइलों को निकालें (अधिकांश आक्रामक)

 git clean -f -d 

विकल्प 2 : उपरोक्त प्रभाव का पूर्वावलोकन करें (सबसे आक्रामक पूर्वावलोकन करें)

 git clean -f -d -n 

विकल्प 3 : सभी फ़ाइलें छिपाना (कम आक्रामक)

 `git stash --all` 

स्थानीय शाखा में सभी परिवर्तनों को वापस करने के लिए इसे वापस करने का प्रयास करें

 $ git reset --hard HEAD 

लेकिन अगर आप इस तरह एक त्रुटि देखते हैं:

 fatal: Unable to create '/directory/for/your/project/.git/index.lock': File exists. 

आप '.git' फ़ोल्डर में नेविगेट कर सकते हैं तो index.lock फ़ाइल हटाएं:

 $ cd /directory/for/your/project/.git/ $ rm index.lock 

फाइनली, फिर से कमांड चलाएं:

 $ git reset --hard HEAD 

मैंने एक समान समस्या की खोज की,

स्थानीय प्रतिबद्धों को फेंकना चाहता था:

  1. रिपॉजिटरी क्लोन (जीआईटी क्लोन)
  2. देव शाखा में स्विच (जीआईटी चेकआउट देव)
  3. कुछ कमिट्स (जीआईटी कमिट-एम "कमिट 1")
  4. लेकिन रिमोट (मूल / देव) पर वापस जाने के लिए इन स्थानीय कमानों को दूर करने का निर्णय लिया

तो नीचे किया था:

 git reset --hard origin/dev 

चेक:

 git status On branch dev Your branch is up-to-date with 'origin/dev'. nothing to commit, working tree clean 

अब स्थानीय कमाई खो जाती है, वापस प्रारंभिक क्लोन राज्य में, बिंदु 1 ऊपर।