2011-10-07 7 views
6

मेरे पास एक एंड्रॉइड प्रोजेक्ट है जिसमें एक परीक्षण मॉड्यूल है जो गिट निर्देशिका में उपनिर्देशिका में .apk फ़ाइलों को हटा देगा और फिर से बनाएगा।.gitignore और git rm --cached फ़ाइलों को ट्रैक करने से नहीं रखे

मैं (निर्देशिका, फ़ाइलें स्पष्ट रूप से, और * .apk) .gitignore करने के लिए इन जोड़ लिया है और उसके बाद मैं

git rm -r --cached src/main/Tests/bin 

किया है और Git मुझसे कहता है:

rm 'src/main/Tests/bin/Tests-debug-unaligned.apk' 
rm 'src/main/Tests/bin/Tests-debug.apk' 
rm 'src/main/Tests/bin/Tests.ap_' 
rm 'src/main/Tests/bin/classes.dex' 

मैं तो

git commit . -m "removed apk files" 

मैं परीक्षणों को फिर से चलाता हूं जो फ़ाइलों को हटाते हैं और उन्हें फिर से बनाते हैं। मैं गिट स्थिति चलाता हूं और वे संशोधित के रूप में दिखाई देते हैं। ऐसा लगता है .gitignore काम नहीं कर रहा है। यहाँ मेरी .gitignore फ़ाइल है

*ipr 
*iml 
*iws 
.gitignore 
out/ 
*apk 
src/main/Tests/bin 
src/main/Tests/bin/* 
src/main/Tests/bin/Tests-debug-unaligned.apk 
+0

कि निकालने के बाद उन्हें है .gitignore क्योंकि आप उन्हें शामिल नहीं किया है है? –

उत्तर

1

मैंने अभी आपकी नुस्खा की कोशिश की और यह मेरे लिए काम किया।

~ % mkdir deleteme 
~ % cd deleteme 
~/deleteme % mkdir src src/main src/main/Tests src/main/Tests/bin 
~/deleteme % touch src/main/Tests/bin/blah.apk     
~/deleteme % git init 
Initialized empty Git repository in /Users/sri/deleteme/.git/ 
~/deleteme (master*) % touch src/main/hello.txt 
~/deleteme (master*) % git add . 
~/deleteme (master*) % git commit -m "init" 
[master (root-commit) 0ef5764] init 
0 files changed, 0 insertions(+), 0 deletions(-) 
create mode 100644 src/main/Tests/bin/blah.apk 
create mode 100644 src/main/hello.txt 
~/deleteme (master) % vi .gitignore 
~/deleteme (master) % git rm -r --cached src/main/Tests/bin 
rm 'src/main/Tests/bin/blah.apk' 
~/deleteme (master*) % git commit -m "removed" 
[master 5ca6456] removed 
0 files changed, 0 insertions(+), 0 deletions(-) 
delete mode 100644 src/main/Tests/bin/blah.apk 
~/deleteme (master) % touch src/main/Tests/bin/blah.apk  
~/deleteme (master) % git status 
# On branch master 
nothing to commit (working directory clean) 
~/deleteme (master) % 

शायद कुछ अन्य निर्देशिका (या एक वैश्विक निर्देश) अधिभावी है कि है कि तुम क्या gitconfig में आप ने कहा है में gitconfig। आपने का उल्लेख नहीं किया है जहां यह gitconfig स्थित है। विभिन्न स्थानों की प्राथमिकता के लिए गिटिनोरोर या ऑनलाइन सहायता दस्तावेज़ों के लिए मैन पेज देखें जहां आप अनदेखा नियम निर्दिष्ट कर सकते हैं। आदमी पृष्ठों कहते हैं ...

... वरीयता का निम्न क्रम, उच्चतम से न्यूनतम (श्रेष्ठता के एक स्तर के भीतर, पिछले मिलान पैटर्न परिणाम का फैसला): पैटर्न आदेश से पढ़ा उन आदेशों के लिए लाइन जो का समर्थन करती हैं।

o Patterns read from a .gitignore file in the same directory as the path, or in any 
     parent directory, with patterns in the higher level files (up to the toplevel of the 
     work tree) being overridden by those in lower level files down to the directory 
     containing the file. These patterns match relative to the location of the .gitignore 
     file. A project normally includes such .gitignore files in its repository, containing 
     patterns for files generated as part of the project build. 

    o Patterns read from $GIT_DIR/info/exclude. 

    o Patterns read from the file specified by the configuration variable core.excludesfile 
0

तुम सिर्फ कोशिश की है

*.apk 
अपने .gitignore में

? अगर उन्हें पहले ट्रैक किया गया था, तो आपको उन्हें हटाना होगा और .gitignore को सेट करने से पहले इसे प्रतिबद्ध करना होगा। एक बार बाहर निकलने के बाद, .gitignore फ़ाइल में प्रविष्टि जोड़ें और इसे काम करना चाहिए।

+0

मैं फ़ाइलों के हटा देता हूं। मुझे पता है कि "काम करना चाहिए", हालांकि यह नहीं करता है। – browep

+0

* एपीके के साथ-साथ निर्देशिका में वे एक अच्छी पथ के लिए एक पूर्ण पथ हैं, उसी परिणाम – browep

+2

किसी भी .apk प्रविष्टियों के लिए .gitignore फ़ाइल को साफ़ करें। प्रतिबद्ध होते हैं। एपीके फाइलों को हटाएं। गिट एड-ए और प्रतिबद्ध करें। अनदेखा फ़ाइल में बस * .apk जोड़ें। प्रतिबद्ध। अब आपको फ़ाइलों को ठीक से अनदेखा करना चाहिए। आप इस साफ-सफाई कार्य को एक गिट रीसेट करके एक प्रतिबद्धता में स्क्वैश कर सकते हैं - सॉफ्ट हेड ~ 3 && git add -A && git commit -m "निश्चित अनदेखा करें" –

27

मुझे लगता है कि आप का उपयोग कर अपने सभी stagged फ़ाइलों को साफ करने की जरूरत है:

git rm -r --cached . 

git add -A 

तब प्रतिबद्ध:

git commit -m ".gitignore" 

लेकिन यकीन है कि आप ऐसा करने से पहले अपने परिवर्तन के लिए प्रतिबद्ध हैं।

संबंधित मुद्दे