नई अनट्रैक फ़ाइलों सहित कार्यशील निर्देशिका से सभी परिवर्तनों को कैसे हटाएं। मुझे पता है कि git checkout -f
ऐसा करता है, लेकिन यह अंतिम प्रतिबद्ध के बाद से बनाई गई नई अनट्रैक की गई फ़ाइलों को नहीं हटाता है।
किसी को भी एक विचार है कि कैसे करना है?
नई अनट्रैक फ़ाइलों सहित कार्यशील निर्देशिका से सभी परिवर्तनों को कैसे हटाएं। मुझे पता है कि git checkout -f
ऐसा करता है, लेकिन यह अंतिम प्रतिबद्ध के बाद से बनाई गई नई अनट्रैक की गई फ़ाइलों को नहीं हटाता है।
किसी को भी एक विचार है कि कैसे करना है?
जवाबों:
git reset --hard # removes staged and working directory changes
## !! be very careful with these !!
## you may end up deleting what you don't want to
## read comments and manual.
git clean -f -d # remove untracked
git clean -f -x -d # CAUTION: as above but removes ignored files like config.
git clean -fxd :/ # CAUTION: as above, but cleans untracked and ignored files through the entire repo (without :/, the operation affects only the current directory)
यह देखने के लिए कि वास्तव में इसे हटाने के बिना पहले हाथ से क्या हटाया जाएगा, -n
ध्वज का उपयोग करें (यह मूल रूप से एक परीक्षण-रन है)। जब आप वास्तव में हटाने के लिए तैयार हों, तो -n
ध्वज को हटा दें :
git clean -nfd
git clean -fxd
वास्तव में खतरनाक हो सकता है यदि आप नहीं जानते कि आप क्या कर रहे हैं। आप स्थायी रूप से कुछ महत्वपूर्ण महत्वपूर्ण फ़ाइलों को हटा सकते हैं, जैसे कि आपका डेटाबेस, आदि। सावधानी बरतें।
git clean -f -d
अनदेखा किए गए फ़ोल्डरों से भी फाइल डिलीट हो जाएगी। तो आप सभी लोकल लॉग्स और उस तरह की चीजें चला जाएगा। आमतौर पर यह एक बड़ी समस्या नहीं है, लेकिन यह जानना बेहतर है।
सबसे सुरक्षित तरीका, जिसका मैं अक्सर उपयोग करता हूं:
git clean -fd
प्रति /docs/git-clean
पृष्ठ के अनुसार सिंटैक्स स्पष्टीकरण :
-f
(उर्फ:) --force
। अगर Git कॉन्फ़िगरेशन वेरिएबल clean.requireForce को झूठा सेट नहीं किया जाता है, तो git क्लीन फ़ाइलों या निर्देशिकाओं को हटाने से मना कर देगा जब तक कि -f, -n या -i नहीं दिया जाता है। जब तक दूसरा -f नहीं दिया जाता है, Git .गित उप निर्देशिका या फ़ाइल के साथ निर्देशिकाओं को हटाने से इंकार कर देगा।-d
। अनट्रैक की गई फ़ाइलों के अलावा अनट्रैकड डाइरेक्टरीज़ को हटा दें। अगर एक अनट्रैकड डायरेक्टरी को एक अलग Git रिपॉजिटरी द्वारा प्रबंधित किया जाता है, तो इसे डिफ़ॉल्ट रूप से हटाया नहीं जाता है। यदि आप वास्तव में इस तरह की डायरेक्टरी को हटाना चाहते हैं तो दो बार विकल्प का उपयोग करें।जैसा कि टिप्पणियों में उल्लेख किया गया है, ऐसा करना बेहतर हो सकता है git clean -nd
जो एक सूखा रन करता है और आपको बताता है कि वास्तव में इसे हटाने से पहले क्या हटा दिया जाएगा।
git clean
डॉक्टर पृष्ठ से लिंक करें :
https://git-scm.com/docs/git-clean
git clean -nd .
फ़ाइलों को हटाने से पहले वास्तव में उपयोग करता हूंgit clean -fd .
add -A
+ commit -a
+ कर सकते हैं । प्रत्येक को हटाना और हटाना केवल प्रमुख परिदृश्यों के लिए नहीं है। इसके अलावा, ड्राई रनिंग एक सिल्वर बुलेट नहीं है: क्या होगा अगर आपने समीक्षा के दौरान कुछ याद किया या गलती की है? revert head
git clean
सभी अस्थिर फ़ाइलों के लिए:
git checkout -- .
.
अंत में महत्वपूर्ण है।
आप .
अपनी परियोजना के केवल एक विशिष्ट उप-निर्देशिका को खाली करने के लिए एक उप-निर्देशिका नाम से बदल सकते हैं । समस्या का समाधान यहां विशेष रूप से किया गया है ।
src/app/work/filename.js
और ../app/working/test/filename.js
। git checkout -- .
केवल शाखा पर उपयोग करने से केवल पहली फ़ाइल ( प्रमुख के बिना .. ) नष्ट हो गई । इसलिए मुझे cd ../
उस कमांड का उपयोग करके दूसरी फ़ाइल को हटाने के लिए दूसरी स्थान निर्देशिका में आना पड़ा ।
git clean
कमांड पर एक नजर है ।
git-clean - काम करने वाले पेड़ से अनट्रैक की गई फ़ाइलों को हटा दें
वर्त्तमान निर्देशिका से शुरू होकर संस्करण नियंत्रण में न आने वाली फ़ाइलों को पुन: हटाकर काम करने वाले पेड़ को साफ करता है।
आम तौर पर, केवल गिट के लिए अज्ञात फाइलें हटा दी जाती हैं, लेकिन अगर -x विकल्प निर्दिष्ट किया जाता है, तो अनदेखा की गई फाइलें भी हटा दी जाती हैं। उदाहरण के लिए, सभी निर्माण उत्पादों को हटाने के लिए उपयोगी हो सकता है।
git clean -i
मेनू से "क्लीन" की कोशिश की है और चुना है - यह अंत में नई फ़ाइलों को हटा दिया है।
निम्नलिखित कार्य:
git add -A .
git stash
git stash drop stash@{0}
कृपया ध्यान दें कि यह आपके अस्थिर और मंचित दोनों स्थानीय परिवर्तनों को छोड़ देगा। इसलिए आपको इन कमांड्स को चलाने से पहले आपको कुछ भी रखना चाहिए।
एक विशिष्ट उपयोग का मामला: आपने बहुत सारी फ़ाइलों या निर्देशिकाओं को इधर-उधर कर दिया और फिर मूल स्थिति में वापस जाना चाहते हैं।
git stash drop
?
git add -A .
) में हैं। मैं 30 मीटर से हार गया हूँ कोई फ़ाइल मैच नहीं था। धन्यवाद!
आप इसे दो चरणों में कर सकते हैं:
git checkout -f
git clean -fd
मैंने सोचा था कि यह ( चेतावनी: निम्नलिखित सब कुछ मिटा देगा )
$ git reset --hard HEAD
$ git clean -fd
reset
परिवर्तन पूर्ववत। clean
किसी भी ट्रैक न किए गए दूर करने के लिए च Iles और घ irectories।
git pull
बाद में करते हैं: CONFLICT (content): Merge conflict in...
मैंने केवल इसे हल किया हैgit pull --strategy=ours
git reset --hard origin/{branchName}
यह सभी अनटैक की गई फ़ाइलों को हटा देगा।
एक वैकल्पिक समाधान परिवर्तनों को करना है, और फिर उन कमिटों से छुटकारा पाना है। इससे पहले तो तत्काल लाभ नहीं होता है, लेकिन यह चंक्स में प्रतिबद्ध होने और बैकअप के लिए एक जीआईटी टैग बनाने की संभावना को खोलता है।
आप इसे वर्तमान शाखा पर कर सकते हैं, जैसे:
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git revert HEAD
git reset HEAD^^
या आप इसे अलग हेड पर कर सकते हैं। (मान लें कि आप ब्रंचनाम शाखा पर शुरू होते हैं):
git checkout --detach HEAD
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git checkout BRANCHNAME
हालाँकि, आमतौर पर मैं जो कुछ भी करता हूं, वह चांस में करना होता है, फिर कुछ या सभी का नाम "DISCARD: ..." के रूप में रखना चाहिए। फिर बुरे कामों को दूर करने और अच्छे लोगों को रखने के लिए इंटरैक्टिव रिबेट का उपयोग करें।
git add -p # Add changes in chunks.
git commit -m"DISCARD: Some temporary changes for debugging"
git add -p # Add more stuff.
git commit -m"Docblock improvements"
git tag archive/local-changes-2015-08-01
git rebase -i (commit id) # rebase on the commit id before the changes.
# Remove the commits that say "DISCARD".
यह अधिक वर्बोज़ है, लेकिन यह वास्तव में समीक्षा करने की अनुमति देता है कि आप किन परिवर्तनों को छोड़ना चाहते हैं।
git lol
औरgit lola
शॉर्टकट इस कार्यप्रवाह के साथ बहुत मददगार रहे हैं।
मेरे द्वारा उपयोग किए जाने वाले विशिष्ट फ़ोल्डर के लिए:
git checkout -- FolderToClean/*
यह शायद एक नॉब जवाब है, लेकिन: मैं विंडोज़ के लिए TortoiseGit का उपयोग करता हूं और इसमें REVERT नामक एक अच्छी सुविधा है। इसलिए आप अपने स्थानीय गैर-पंजीकृत गैर-परिवर्तनित परिवर्तनों को वापस करने के लिए क्या करते हैं:
git help reset
औरgit help clean