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




branch git-branch (25)

यदि आप केवल 'गिट स्थिति' द्वारा अनचाहे के रूप में सूचीबद्ध फ़ाइलों को हटाना चाहते हैं

git stash save -u
git stash drop "[email protected]{0}"

मैं इसे 'गिट क्लीन' करने के लिए पसंद करता हूं क्योंकि 'गिट क्लीन' गिट द्वारा अनदेखा फाइलों को हटा देगा, इसलिए आपके अगले निर्माण को सब कुछ पुनर्निर्माण करना होगा और आप भी अपनी आईडीई सेटिंग्स खो सकते हैं।

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


गिट भंडार और सभी submodules दोबारा साफ करें

निम्न आदेश वर्तमान गिट भंडार और इसके सभी सबमिड्यूल को दोबारा साफ कर देगा:

(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)

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

git clean -fdx

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


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

git clean -d -x -f

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

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


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

git clean -d -n

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

Sample.txt हटा देंगे

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

git clean -d -f

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

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


git clean -fd निर्देशिका हटा देता है

git clean -fX अनदेखा फाइलों को हटा देता है

git clean -fx अनदेखा और अनदेखा फाइलों को हटा देता है

संयोजन के रूप में सभी उपरोक्त विकल्पों का उपयोग किया जा सकता है

git clean -fdXx

अधिक सहायता के लिए गिट मैनुअल की जांच करें


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

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

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

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

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

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

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


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

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


git-clean वह है जिसे आप ढूंढ रहे हैं। यह काम करने वाले पेड़ से अनचाहे फ़ाइलों को हटाने के लिए प्रयोग किया जाता है।


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

git clean -f {dir_path}

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

git clean -fxd {dir_path}

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


गिट दस्तावेज़ीकरण गिट के अनुसार साफ करें

काम करने वाले पेड़ से अनचाहे फ़ाइलों को हटा दें

चरण 1 यह दिखाने के लिए है कि -n विकल्प का उपयोग करके क्या हटाया जाएगा:

git clean -n

स्वच्छ कदम - सावधान रहें: यह फाइलों को हटा देगा :

git clean -f
  • निर्देशिकाओं को हटाने के लिए, git clean -f -d या git clean -fd चलाएं
  • अनदेखा फ़ाइलों को निकालने के लिए, git clean -f -X या git clean -fX
  • अनदेखा और अनदेखा फ़ाइलों को निकालने के लिए, git clean -f -x या git clean -fx

दो बाद के आदेशों के लिए X पर केस अंतर पर ध्यान दें

अगर clean.requireForce को आपके कॉन्फ़िगरेशन में "सत्य" (डिफ़ॉल्ट) पर सेट किया गया है, तो किसी को निर्दिष्ट करने की आवश्यकता है -f अन्यथा वास्तव में कुछ भी नहीं होगा।

अधिक जानकारी के लिए फिर से git-clean डॉक्स देखें।

विकल्प

-f

--force

यदि गिट कॉन्फ़िगरेशन वेरिएबल clean.requireForce को गलत पर सेट नहीं किया गया है, तो गिट क्लीन को तब तक चलाने से इनकार कर दिया जाएगा जब तक -f, -n या -i।

-एक्स

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

-एक्स

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

-n

--पूर्वाभ्यास

वास्तव में कुछ भी नहीं हटाएं, बस दिखाएं कि क्या किया जाएगा।

-d

अनचाहे फ़ाइलों के अलावा अनचाहे निर्देशिका हटाएं। यदि एक अनचाहे निर्देशिका को एक अलग गिट भंडार द्वारा प्रबंधित किया जाता है, तो इसे डिफ़ॉल्ट रूप से हटाया नहीं जाता है। यदि आप वास्तव में ऐसी निर्देशिका को हटाना चाहते हैं तो -f विकल्प दो बार उपयोग करें।


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

git add .
git reset --hard HEAD

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


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 का उपयोग करना आसान होता है, बस इसे इस तरह करें:

git clean -fd

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

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

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

git clean -f

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

git clean -fd

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

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

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

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

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



मुझे git stash push -u क्योंकि आप उन्हें git stash pop साथ सभी को पूर्ववत कर सकते हैं।

संपादित करें: इसके अलावा मुझे एक छेड़छाड़ में अनचाहे फ़ाइल दिखाने का एक तरीका मिला (उदाहरण के लिए git show [email protected]{0}^3 ) https://.com/a/12681856/338986

EDIT2: पुट के पक्ष में git stash save को हटा दिया गया है। धन्यवाद @ लिपि-भेड़िया।


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

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

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

यदि अनचाहे निर्देशिका अपने स्वयं के एक गिट भंडार है (उदाहरण के लिए सबमिशन), तो आपको दो बार उपयोग करने की आवश्यकता है:

git clean -d -f -f


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

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


सामान्य git clean कमांड मेरे git version 2.9.0.windows.1 साथ git version 2.9.0.windows.1 फ़ाइलों को नहीं git version 2.9.0.windows.1

$ git clean -fdx     # doesn't remove untracked files
$ git clean -fdx *   # Append star then it works!

उपयोगकर्ता इंटरैक्टिव दृष्टिकोण:

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/arsdumpgenerator/s3/ [y/N]? y

इंटरैक्टिव के लिए -i
बल के लिए
निर्देशिका के लिए डीडी
अनदेखा फ़ाइलों के लिए एक्स (अगर आवश्यक हो तो जोड़ें)

नोट: यह देखने के लिए कि यह क्या करेगा, केवल -n या --dry-run


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

वास्तविक कमांड चलाने से पहले हमेशा -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 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

गिट डॉक्स से अनचाहे फ़ाइलों को हटाने के लिए अनुशंसित कमांड गिट साफ़ है

गिट क्लीन - काम करने वाले पेड़ से अनचाहे फ़ाइलों को हटा दें

सुझाया गया तरीका: git clean -i का उपयोग कर इंटरएटिव मोड ताकि हम इसका नियंत्रण कर सकें। शेष उपलब्ध विकल्पों को देखते हैं।

उपलब्ध विकल्प:

git clean 
    -d -f -i -n -q -e -x -X (can use either)

स्पष्टीकरण:

1.- डी

अनचाहे फ़ाइलों के अलावा अनचाहे निर्देशिका हटाएं। यदि एक अनचाहे निर्देशिका को एक अलग गिट भंडार द्वारा प्रबंधित किया जाता है, तो इसे डिफ़ॉल्ट रूप से हटाया नहीं जाता है। यदि आप वास्तव में ऐसी निर्देशिका को हटाना चाहते हैं तो -f विकल्प दो बार उपयोग करें।

2. -एफ, - बल

यदि गिट कॉन्फ़िगरेशन वेरिएबल clean.requireForce को गलत पर सेट नहीं किया गया है, तो गिट क्लीन को तब तक चलाने से इनकार कर दिया जाएगा जब तक -f, -n या -i।

3. -i, - इंटरैक्टिव

दिखाएं कि क्या किया जाएगा और फ़ाइलों को अंतःक्रियात्मक रूप से साफ करें। विवरण के लिए "इंटरेक्टिव मोड" देखें।

4. -एन, - ड्राय रन

वास्तव में कुछ भी नहीं हटाएं, बस दिखाएं कि क्या किया जाएगा।

5. -q, --quiet

चुप रहें, केवल त्रुटियों की रिपोर्ट करें, लेकिन उन फ़ाइलों को नहीं जिन्हें सफलतापूर्वक हटाया गया है।

6. -e, - exclude =

.Gitignore (प्रति निर्देशिका) और $ GIT_DIR / जानकारी / बहिष्कार में पाए गए लोगों के अलावा, इन पैटर्न को प्रभाव में अनदेखा नियमों के सेट में भी मानते हैं।

7. -x

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

8. -एक्स

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


मुझे आश्चर्य है कि किसी ने इससे पहले उल्लेख नहीं किया है:

git clean -i

यह इंटरैक्टिव के लिए खड़ा है और आपको हटाए जाने वाले चीज़ों का त्वरित अवलोकन मिलेगा, जिससे आप प्रभावित फाइलों को शामिल / बहिष्कृत कर सकते हैं। कुल मिलाकर, असली सफाई से पहले अनिवार्य --dry-run से भी तेज़।

यदि आप खाली फ़ोल्डर्स का ख्याल रखना चाहते हैं तो आपको एक- -d में टॉस करना होगा। अंत में, यह एक अच्छा उपनाम बनाता है:

git iclean

ऐसा कहा जा रहा है कि, इंटरैक्टिव कमांड का अतिरिक्त हाथ होल्डिंग अनुभवी उपयोगकर्ताओं के लिए थकाऊ हो सकता है। इन दिनों मैं पहले से ही पहले से git clean -fd उपयोग करता हूं


इसे बाहर ले जाएं, प्रतिबद्ध करें, फिर इसे वापस ले जाएं। इसने मेरे लिए अतीत में काम किया है। इसे पूरा करने के लिए शायद एक 'गिटियर' तरीका है।







git branch git-branch