git वर्तमान गिट काम करने वाले पेड़ से स्थानीय (अनचाहे) फ़ाइलों को कैसे हटाएं?





15 Answers

यह सुनिश्चित करने के लिए कि निर्देशिका भी हटा दी गई है, git clean -f -d का उपयोग करें।

फिर आप जांच सकते हैं कि आपकी फाइलें वास्तव में git status साथ चली गई हैं या नहीं।

git branch git-branch

आप अपने वर्तमान काम करने वाले पेड़ से अनचाहे स्थानीय फ़ाइलों को कैसे हटा सकते हैं?







अनचाहे फ़ाइलों को हटाने के लिए सरल तरीका

सभी अनचाहे फ़ाइलों को निकालने के लिए, सरल तरीका उन सभी को पहले जोड़ना और रेपो को नीचे के रूप में रीसेट करना है

git add --all
git reset --hard HEAD



यही वह है जो मैं हमेशा उपयोग करता हूं:

git clean -fdx

एक बहुत बड़ी परियोजना के लिए आप इसे दो बार चलाने के लिए चाहते हैं।




यदि विशेष उपनिर्देशिका से अनचाहे फ़ाइलों को निकालने के लिए आवश्यक है,

git clean -f {dir_path}

और अनचाहे dir / फ़ाइलों को हटाने और फ़ाइलों को अनदेखा करने के लिए संयुक्त तरीका।

git clean -fxd {dir_path}

इसके बाद आप केवल git status में फ़ाइलों को संशोधित करेंगे।




ठीक है, अवांछित अनचाहे फ़ाइलों और फ़ोल्डरों को हटाने से कमांड लाइन में git का उपयोग करना आसान होता है, बस इसे इस तरह करें:

git clean -fd

ऐसा करने से पहले दो बार जांचें क्योंकि यह बिना किसी इतिहास के फाइलों और फ़ोल्डरों को हटा देगा ...

इसके अलावा, इस मामले में, -f बल के लिए खड़ा है और -d निर्देशिका के लिए खड़ा है ...

इसलिए, यदि आप केवल फाइलों को हटाना चाहते हैं, तो आप केवल -f उपयोग कर सकते हैं:

git clean -f

यदि आप (निर्देशिका) और फ़ाइलों को हटाना चाहते हैं, तो आप केवल इस तरह की अनचाहे निर्देशिका और फ़ाइलों को हटा सकते हैं:

git clean -fd

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

और -i झंडा जोड़कर, गिट आपको फ़ाइलों को एक-एक करके हटाने के लिए अनुमति मांगता है।

यदि आप सुनिश्चित नहीं हैं और पहले चीजों को जांचना चाहते हैं, तो -n ध्वज जोड़ें।

यदि आप सफल हटाने के बाद कोई रिपोर्ट नहीं देखना चाहते हैं तो -q उपयोग करें।

मैं इसे और अधिक यादगार बनाने के लिए नीचे दी गई छवि भी बनाता हूं, विशेष रूप से मैंने कई लोगों को भ्रमित करने के लिए देखा -f कभी-कभी फ़ोल्डर की सफाई के लिए या इसे किसी भी तरह मिलाएं!





उपयोग करने का एक बेहतर तरीका है: गिट साफ़ करें

git clean -d -x -f

यह निर्देशिका (-d) और git (-x) द्वारा अनदेखा फ़ाइलों सहित अनचाहे फ़ाइलों को हटा देता है।

साथ ही, -f मोड के लिए dry-run या -i लिए -f तर्क -n को प्रतिस्थापित करें और यह आपको बताएगा कि क्या हटाया जाएगा।




git clean -f -d -x $(git rev-parse --show-cdup) रूट डायरेक्टरी पर साफ लागू होता है, इससे कोई फर्क नहीं पड़ता कि आप इसे रिपोजिटरी डायरेक्टरी पेड़ में कहां कहते हैं। मैं इसे हर समय उपयोग करता हूं क्योंकि यह आपको उस फ़ोल्डर को छोड़ने के लिए मजबूर नहीं करता है जहां आप अभी काम कर रहे हैं और जहां आप हैं वहां से साफ और प्रतिबद्ध करने की अनुमति देता है।

सुनिश्चित करें कि flags -f , -d , -x आपकी आवश्यकताओं से मेल खाता है:

-d
       Remove untracked directories in addition to untracked files. If an
       untracked directory is managed by a different Git repository, it is
       not removed by default. Use -f option twice if you really want to
       remove such a directory.

-f, --force
       If the Git configuration variable clean.requireForce is not set to
       false, git clean will refuse to delete files or directories unless
       given -f, -n or -i. Git will refuse to delete directories with .git
       sub directory or file unless a second -f is given. This affects
       also git submodules where the storage area of the removed submodule
       under .git/modules/ is not removed until -f is given twice.

-x
       Don't use the standard ignore rules read from .gitignore (per
       directory) and $GIT_DIR/info/exclude, but do still use the ignore
       rules given with -e options. This allows removing all untracked
       files, including build products. This can be used (possibly in
       conjunction with git reset) to create a pristine working directory
       to test a clean build.

अन्य झंडे भी उपलब्ध हैं, बस git clean --help जांचें।




ऐसी स्थिति के लिए एक जीवनशैली मैंने अभी आविष्कार किया और कोशिश की (यह पूरी तरह से काम करता है):

git add .
git reset --hard HEAD

सावधान रहें! ऐसा करने से पहले किसी भी आवश्यक परिवर्तन (यहां तक ​​कि गैर-अनचाहे फ़ाइलों में भी) करना सुनिश्चित करें




वास्तव में हटाने से पहले क्या हटाया जाएगा यह जानने के लिए:

git clean -d -n

यह कुछ ऐसा आउटपुट करेगा:

Sample.txt हटा देंगे

पिछले कमांड के आउटपुट में सूचीबद्ध सब कुछ हटाने के लिए:

git clean -d -f

यह कुछ ऐसा आउटपुट करेगा:

Sample.txt को हटा रहा है




'गिट क्लीन' कमांड चलाने के दौरान सावधान रहें।

वास्तविक कमांड चलाने से पहले हमेशा -n उपयोग करें क्योंकि यह आपको दिखाएगा कि कौन सी फाइलें हटा दी जाएंगी।

git clean -n -d 
git clean -f -d

डिफ़ॉल्ट रूप से, git clean केवल अनचाहे फ़ाइलों को हटा देगा जिन्हें अनदेखा नहीं किया जाता है। कोई भी फ़ाइल जो आपके .gitignore या अन्य अनदेखा फ़ाइलों में किसी पैटर्न से मेल खाती है उसे हटाया नहीं जाएगा। अगर आप उन फ़ाइलों को भी हटाना चाहते हैं, तो आप क्लीन कमांड में -x जोड़ सकते हैं।

git clean -f -d -x

स्वच्छ कमांड के साथ भी इंटरैक्टिव मोड उपलब्ध है

git clean -x -i

वैकल्पिक रूप से

यदि आप 100% सुनिश्चित नहीं हैं कि आपके असामान्य काम को हटाना सुरक्षित है, तो आप इसके बजाय छेड़छाड़ का उपयोग कर सकते हैं

git stash --all

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

git stash drop // or clean



git clean -f to remove untracked files from working directory.

मैंने यहां कुछ ब्लॉग्स को अपने ब्लॉग, git-intro-basic-commands




हम नीचे गिट टिप्पणियों का उपयोग करके वर्तमान गिट काम करने वाले पेड़ से आसानी से स्थानीय अनचाहे फ़ाइलों को हटा सकते हैं।

git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]

उदाहरण:

git reset --hard HEAD

लिंक:

  1. https://git-scm.com/docs/git-reset
  2. पिछली प्रतिबद्धता पर वापस जाने के लिए मैं 'गिट रीसेट - हार्ड हेड' का उपयोग कैसे करूं?
  3. रिमोट रिपोजिटरी हेड की तरह स्थानीय रिपोजिटरी शाखा को रीसेट करें
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html



zsh के साथ ओह-माय-जेएसएच गिट प्लगइन के माध्यम से उन महान उपनाम प्रदान करता है। वे भी बैश में इस्तेमाल किया जा सकता है।

gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'

  • gclean फ़ाइलों के अलावा gclean निर्देशिका हटा देता है
  • gpristine स्थानीय परिवर्तनों को रीसेट कर देता है, gpristine निर्देशिकाओं को हटाता है, अनचाहे फ़ाइलों को हटाता है और .gitignore (प्रति निर्देशिका) और $ GIT_DIR / जानकारी / बहिष्कार से पढ़े गए मानक अनदेखा नियमों का उपयोग नहीं करते हैं, लेकिन अभी भी विकल्प के साथ दिए गए अनदेखा नियमों का उपयोग करते हैं । यह बिल्ड उत्पादों सहित सभी अनचाहे फ़ाइलों को हटाने की अनुमति देता है। स्वच्छ निर्माण का परीक्षण करने के लिए एक प्राचीन कार्यशील निर्देशिका बनाने के लिए इसका उपयोग संभवतः गिट रीसेट के साथ किया जा सकता है



मैंने यहां सबसे लोकप्रिय उत्तरों का उपयोग करने में असफल रहा - गिट किसी भी तरह से भंडार से अनचाहे फ़ाइलों को हटा नहीं देता है। कोई विचार क्यों नहीं। यह विशेष गिट कमांड के बिना मेरा सुपर सरलीकृत उत्तर है!

मिशन: गिट भंडार से अनचाहे फ़ाइलों को हटाएं:

  1. थोड़ी देर के लिए अपने स्थानीय प्रोजेक्ट फ़ोल्डर से कहीं और फ़ाइलों और फ़ोल्डरों को ले जाएं
  2. प्रतिबद्धताओं के लिए इन फ़ाइलों और फ़ोल्डर्स के बारे में .gitignore में सभी पंक्तियां हटाएं
  3. गिट जोड़ें
  4. गिट प्रतिबद्ध -एम "अनचाहे फ़ाइलों से भंडार की सफाई"
  5. गिट पुश

भंडार से सभी फाइलें और फ़ोल्डर्स हटा दिए गए हैं।

यदि आपको उनकी आवश्यकता हो तो उन्हें स्थानीयहोस्ट पर पुनर्स्थापित करें:

  1. उन सभी फ़ाइलों और फ़ोल्डर्स को वापस ले जाएं जिन्हें आपने स्थानीय प्रोजेक्ट फ़ोल्डर में अस्थायी रूप से स्थानांतरित कर दिया है
  2. इन फ़ाइलों और फ़ोल्डरों के बारे में सभी पंक्तियों को वापस ले जाएं .gitignore
  3. गिट जोड़ें
  4. गिट प्रतिबद्ध -एम "गिट रिपोजिटरी में फिर से जांच या फाइल नहीं दिख रही है"
  5. गिट पुश

आप कर चुके हैं!




Related