2012-06-18 15 views
26

के साथ एक फ़ाइल को बाहर निकालें, मैं एक बड़ी पायथन परियोजना पर काम कर रहा हूं, और अगर मैं .pyc और * ~ फ़ाइलों में वास्तव में बीमार हूं। मैं उन्हें हटाना चाहता हूं। मैंने देखा है कि -X गिट क्लीन का ध्वज अनचाहे फ़ाइलों को हटा देगा। जैसा कि आप कल्पना कर सकते हैं, मैं .pyc और न ही *~ फ़ाइलों को ट्रैक नहीं कर रहा हूं। और वह चाल करेगा। समस्या यह है कि मेरे पास local_settings.py फ़ाइल है जिसे मैं गिट क्लीन के बाद रखना चाहता हूं।गिट: गिट क्लीन

तो, मुझे यही मिला है।

.gitignore:

*.pyc 
*~ 
local_settings.py 

जब मैं इस आदेश पर अमल:

local_settings.py को दूर करेंगे
आवश्यकताओं को दूर करेंगे:

git clean -X -n -e local_settings.py 

मैं परिणाम की इस सूची में मिलता है .txt ~
हटा देगा (ओथ के आर गुच्छा) ~ फ़ाइलों
के अन्य गुच्छा को दूर करेंगे() pyc फ़ाइलों

मैं local_settings.py फ़ाइल को हटाने के लिए नहीं करना चाहती। मैंने इसे करने के कई तरीकों का प्रयास किया है, लेकिन मैं यह समझ नहीं सकता कि इसे कैसे लागू किया जाए।

git clean -X -n -e local_settings.py 
git clean -X -n -e "local_settings.py" 
git clean -X -n --exclude=local_settings.py 
git clean -X -n --exclude="local_settings.py" 

और कुछ भी काम नहीं करता है।

संपादित करें:

भावी पीढ़ी के लिए, यह करने के लिए सही तरीका है (धन्यवाद @Rifat):

git clean -x -n -e local_settings.py # Shows what would remove (-n flag) 
git clean -x -f -e local_settings.py # Removes it (note the -f flag) 
+2

गले '~ .pyc's, एक और निर्देशिका में अस्थायी/बैकअप फ़ाइलों लगाने के लिए अपना संपादक कॉन्फ़िगर (या नहीं बिल्कुल) और 'गिट क्लीनिंग' के बारे में भूल जाओ। अपने ओसीडी – KurzedMetal

+0

फ़ीड न करें क्या आपने * .pyc और * ~ पहले से ही काम किया है? –

+0

'git अद्यतन-अनुक्रमणिका --skip-worktree local_settings.py' मदद करता है? –

उत्तर

13

क्या आप पूंजी के बजाय x के साथ इसे आजमाएं। जैसा - git clean -x

git clean -x -n -e local_settings.py # Shows what would remove (-n flag) 
git clean -x -f -e local_settings.py # Removes it (note the -f flag) 

से the git documentation:

-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. 

    -X 
     Remove only files ignored by git. This may be useful to rebuild 
     everything from scratch, but keep manually created files. 
+0

यह है! आपका बहुत बहुत धन्यवाद! – santiagobasulto

0

आप अजगर चला रहे हैं 2.6+ बस, PYTHONDONTWRITEBYTECODE वातावरण चर सेट , true पर। तुम बस यह पूरी तरह से अपने प्रोफ़ाइल के लिए निष्क्रिय करने के लिए .profile या .bashrc की तरह कुछ करने के लिए निम्न जोड़ सकते हैं:

export PYTHONDONTWRITEBYTECODE=true 

या, यदि आप अभी क्या करना है कि एक विशेष परियोजना पर कार्य करते के लिए चाहते हैं, आप की आवश्यकता होगी प्रत्येक बार अपने खोल में उपरोक्त चलाएं (या वर्चुअलएन्व और वर्चुअलएन्वार्पर का उपयोग कर रहे हैं, तो आप अपनी वर्चुअलएनवी इनिट स्क्रिप्ट्स में से एक में), या python पर कॉल करते समय आप आसानी से -B पैरामीटर पास कर सकते हैं, उदाहरण के लिए

python -B manage.py runserver 
0

आप पहले से ही pyc के लिए प्रतिबद्ध है और इतने पर हैं, तो निम्न कार्य करें:

जोड़ें * .pyc, * ~ और .gitignore को local_settings.py। फिर अपने Git भंडार में कार्य करें:

find . -name '*.pyc' | xargs rm 
find . -name '*~' | xargs rm 

तो कार्य करें:

git commit -am "get rif of them" 

अब वे तुम्हें अब परेशान नहीं करना चाहिए

8
git clean -X -n --exclude="!local_settings.py" 

काम करता है। मैंने यह खोज लिया जब मैंने googled और this page मिला।

+0

अच्छा! धन्यवाद। :) मुझे अपने खोल में '!' छोड़ना पड़ा, लेकिन यह काम किया। – Vimes

1

मैंने स्थानीय फाइलें डाली हैं जो इस श्रेणी में शामिल हैं .git/info/extrae (उदा। मेरी आईडीई प्रोजेक्ट फाइलें)। वे आप इस तरह एक साफ कर सकते हैं:

git ls-files --others --exclude-from=.git/info/exclude -z | \ 
    xargs -0 --no-run-if-empty rm --verbose 

कहाँ:

  • --दूसरों: ट्रैक न किए गए फ़ाइलों से पता चलता
  • --exclude-से: एक मानक Git से बाहर करने के लिए शैली फ़ाइल को अनदेखा प्रदान सूची
  • -z/-0: \ n के बजाय \ 0 का उपयोग नामों को विभाजित करने के
  • --no-रन-अगर खाली: rm भागो मत यदि सूची खाली है

आप एक उपनाम, उदा बना सकते हैं .:

git config --global alias.myclean '!git ls-files --others --exclude-from=.git/info/exclude -z | xargs -0 --no-run-if-empty rm --verbose --interactive' 

--interactive मतलब है कि आप क्या करने के लिए Git myclean -f विलोपन के लिए मजबूर करने की है।

संदर्भ: http://git-scm.com/docs/git-ls-files (प्लस डिफ़ॉल्ट .git/जानकारी की पहली पंक्ति/बहिष्कृत करें)