2011-10-07 39 views
6

Ho un progetto Android che ha un modulo di test che rimuoverà e ricrea i file .apk in una sottodirectory nella directory git..gitignore e git rm --cached non tengono traccia dei file da tenere tracciato

ho aggiunto questi per .gitignore (la directory, i file in modo esplicito, e * .apk) e poi mi hanno fatto

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

e git mi dice:

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' 

i allora

git commit . -m "removed apk files" 

Eseguo nuovamente i test che eliminano i file e li ricreano. Corro stato git e vengono visualizzati come modificati. Sembra che .gitignore non funzioni. Qui è il mio file .gitignore

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

è che perché non hai aggiunto a loro per .gitignore dopo averli rimossi? –

risposta

1

Ho appena provato la tua ricetta e ha funzionato per me.

~ % 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) % 

Forse il gitconfig in altre directory (o una direttiva globale) che sta ignorando ciò che avete nel gitconfig lei ha detto. Non hai menzionato dove si trova gitconfig. Vedere la pagina man per gitignore oi documenti della guida in linea per la precedenza delle varie posizioni in cui è possibile specificare le regole di ignoranza. Le pagine man dicono ...

... il seguente ordine di precedenza , dal più alto al più basso (all'interno di un livello di precedenza, l'ultima corrispondenza modello decide il risultato): Patterns lette dal comando linea per quei comandi che supportano loro.

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

hai provato appena

*.apk 

nella tua .gitignore? Se sono stati tracciati prima, dovrai eliminarli e commetterli prima di impostare .gitignore. Una volta fuori, aggiungi la voce nel file .gitignore e dovrebbe funzionare.

+0

ho eseguito il commit delle eliminazioni dei file. So che "dovrebbe funzionare", ma non è così. – browep

+0

* apk così come la directory in cui si trovano e un percorso assoluto solo per buona misura, stesso risultato – browep

+2

ripulire il file .gitignore per non avere alcuna .apk. Commettere. Elimina i file apk. git aggiungi -A e commetti. Basta aggiungere * .apk al file ignore. commettere. ora dovresti ignorare i file correttamente. Puoi schiacciare tutto questo lavoro di ripulitura in un commit eseguendo un reset git --soft head ~ 3 && git add -A && git commit -m "fixed ignore" –

27

penso che è necessario pulire tutti i file utilizzando stagged:

git rm -r --cached . 

git add -A 

quindi eseguire il commit:

git commit -m ".gitignore" 

ma assicuratevi di commit delle modifiche prima di fare questo.

Problemi correlati