मैंने सिर्फ एक गिट रिपॉजिटरी को क्लोन किया और एक शाखा की जाँच की। मैंने इस पर काम किया, और फिर अपने सभी स्थानीय परिवर्तनों को हटाने का फैसला किया, जैसा कि मुझे मूल प्रति चाहिए थी।
संक्षेप में, मुझे अपने स्थानीय परिवर्तनों को हटाने के लिए निम्नलिखित दो आदेश देने थे
git checkout .
git clean -f
मेरा सवाल यह है कि,
(१) क्या यह स्थानीय परिवर्तनों से छुटकारा पाने का सही तरीका है, या कृपया मुझे सही दृष्टिकोण की जानकारी दें।
(२) जब हम उपयोग करते हैं तो git reset --hard
मैं इस कमांड के बिना भी रीसेट करने में सक्षम हूं
धन्यवाद
* समाधान: मेजर एडिट (ओं): 03/26: * अस्पष्ट विशिष्ट शब्दावली के साथ अस्पष्ट शब्दों में से कई को बदला गया [ट्रैक / अनट्रेंड / स्टेज्ड / अनस्टेड]
जब हम स्थानीय परिवर्तन करते हैं तो केवल तीन श्रेणियां हो सकती हैं:
टाइप 1. ट्रैक की गई फ़ाइलें
टाइप 2. अनस्ट्रेड ट्रैक्ड फाइल्स
टाइप 3. अनस्ट्रेड अनट्रेक्ड फाइल्स उर्फ अनट्रैकड फाइल्स
- मंचन - जिन्हें मंचन क्षेत्र में ले जाया जाता है / सूचकांक में जोड़ा जाता है
- ट्रैक की गई - संशोधित फ़ाइलें
- अनट्रैकेड - नई फाइलें। हमेशा अस्थिर रहता है। यदि मंचन किया जाता है, तो इसका मतलब है कि वे ट्रैक किए गए हैं।
प्रत्येक कमांड क्या करती है:
git checkout .
- बिना ट्रैक की गई फ़ाइलों को ही हटाता है [टाइप 2]git clean -f
- हटाए गए अनट्रक्क्ड फ़ाइलों को केवल [टाइप 3] हटाता हैgit reset --hard
- हटाए गए और हटाए गए ट्रैक न किए गए फ़ाइलों को केवल [टाइप 1, टाइप 2] हटा दिया जाता है।git stash -u
- सभी परिवर्तनों को हटाता है [टाइप 1, टाइप 2, टाइप 3]
निष्कर्ष:
यह स्पष्ट है कि हम या तो उपयोग कर सकते हैं
(1) combination of `git clean -f` and `git reset --hard`
या
(2) `git stash -u`
वांछित परिणाम प्राप्त करने के लिए।
नोट: स्ट्रैसिंग, क्योंकि शब्द का अर्थ है 'स्टोर (कुछ) सुरक्षित और गुप्त रूप से एक निर्दिष्ट स्थान पर।' यह हमेशा उपयोग करके पुनर्प्राप्त किया जा सकता है git stash pop
। इसलिए उपरोक्त दो विकल्पों के बीच चयन करना डेवलपर की कॉल है।
धन्यवाद क्रिस्टोफ और फ्रेडरिक शॉनिंग।
संपादित करें: ०३/२27
मुझे लगा कि यह ' सावधान ' नोट डालने लायक हैgit clean -f
git clean -f
वहां से कोई वापसी नहीं है। उपयोग करें -n
या --dry-run
आप जो नुकसान करेंगे उसका पूर्वावलोकन करें।
यदि आप निर्देशिकाओं को हटाना भी चाहते हैं, तो दौड़ें git clean -f -d
यदि आप केवल अनदेखा फ़ाइलें निकालना चाहते हैं, तो चलाएँ git clean -f -X
यदि आप अनदेखा और गैर-अनदेखा फ़ाइलों को निकालना चाहते हैं, तो चलाएँ git clean -f -x
संदर्भ: अधिक पर git clean
: वर्तमान गिट वर्किंग ट्री से स्थानीय (अनट्रैक) फ़ाइलों को कैसे निकालें?
संपादित करें: 05/20/15
इस शाखा पर सभी स्थानीय आवागमन को दूर करना [स्थानीय आवागमन को हटाना]
इस शाखा पर सभी स्थानीय कमिट्स को त्यागने के लिए, स्थानीय शाखा को इस शाखा के "अपस्ट्रीम" के समान बनाने के लिए, बस git reset --hard @{u}
संदर्भ: http://sethrobertson.github.io/GitFixUm/fixup.html
या git reset --hard origin/master
[अगर स्थानीय शाखा है master
]
नोट: 06/12/2015 यह अन्य SO प्रश्न का डुप्लिकेट नहीं है जिसे डुप्लिकेट के रूप में चिह्नित किया गया है। यह सवाल स्थानीय जीआईटी परिवर्तनों को हटाने का तरीका बताता है [एक फ़ाइल को हटा दें, मौजूदा फ़ाइल में जोड़े गए परिवर्तनों को हटा दें और विभिन्न दृष्टिकोण; जहां अन्य SO थ्रेड में केवल स्थानीय कमेंट को हटाने का पता होता है। यदि आपने कोई फ़ाइल जोड़ी है, और आप उसे अकेले निकालना चाहते हैं, तो अन्य SO थ्रेड इसके बारे में चर्चा नहीं करता है। इसलिए यह दूसरे की नकल नहीं है]
संपादित करें: ०६/२३/१५
रिमोट रिपॉजिटरी के लिए पहले से ही किए गए कमिट को वापस कैसे लाया जाए?
$ git revert ab12cd15
संपादित करें: 09/01/2015
स्थानीय शाखा और दूरस्थ शाखा से एक पिछली प्रतिबद्ध हटाएं
मामला: आपने बस अपनी स्थानीय शाखा में परिवर्तन शुरू किया और तुरंत दूरस्थ शाखा को धक्का दिया, अचानक एहसास हुआ, अरे नहीं! मुझे इस बदलाव की आवश्यकता नहीं है। अब क्या करें?
git reset --hard HEAD~1
[उस स्थानीय शाखा से हटाने के लिए]
git push origin HEAD --force
[दोनों आदेशों को निष्पादित किया जाना चाहिए। दूरस्थ शाखा से हटाने के लिए]
क्या शाखा है? इसकी वर्तमान में जाँच की गई शाखा है।
संपादित करें 09/08/2015 - स्थानीय गिट मर्ज निकालें :
मैं एक नई कार्य शाखा के साथ master
शाखा और विलय की master
शाखा पर हूंphase2
$ git status
# On branch master
$ git merge phase2
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 8 commits.
प्रश्न: कैसे इस मर्ज से छुटकारा पाने के लिए? कोशिश की git reset --hard
और git clean -d -f
दोनों काम नहीं किया।
केवल एक चीज जो नीचे काम करती है , वह है:
$ git reset --hard origin/master
या
$ git reset --hard HEAD~8
या
$ git reset --hard 9a88396f51e2a068bb7
[sha प्रतिबद्ध कोड - यह वह है जो आपके सभी मर्ज होने से पहले मौजूद था]
git stash -a
[या --all] के रूप में अच्छी तरह से नजरअंदाज कर दिया और अनछुए फ़ाइलों को रोक देंगे। git clean -x
उपेक्षित फ़ाइलों को भी साफ करेगा। git clean -X
केवल उपेक्षित फ़ाइलों को साफ करेगा।