2010-04-27 21 views
12

Ho un progetto di sito Web che ha più di 50.000 file non importanti (allo sviluppo) in alcune directory.Git ignora i file cancellati

/website.com/files/1.txt 
/website.com/files/2.txt 
/website.com/files/3.txt 
/website.com/files/etc.txt 

Il materiale in/file è già nel repository. Voglio eliminare tutti i file in/file sulla mia copia locale, ma voglio git di ignorarlo in modo che non li elimini quando faccio un pull sul server web.

Qualche idea?

risposta

1

Ok Ive ha trovato una soluzione. Basta creare un nuovo repository nelle sottodirectory e il repository padre li ignorerà.

+1

che funzionerà, ma non è l'ideale per finire con un gruppo di filiali/repos in più progetti. andare avanti potrebbe diventare un dolore man mano che la lista dei progetti diventa più grande. Raccomando di diventare un po 'più familiare con '.gitignore' e gli strumenti di gestione dell'indice. C'è un tutorial decente nella mia risposta sopra. E 'davvero abbastanza facile una volta che lo provi una volta ... – MaurerPower

+0

@MaurerPower, mentre apprezzo la tua risposta descrittiva, 'git rm --cached' non soddisfa i miei requisiti. Ad esempio, se utilizzo questo comando, commetto e spingo. Quando tiro su un altro server, cancellerà comunque i file da quel server, anche se non li ha cancellati dal server originale. Ho fatto un test di litte, ecco i miei risultati: http://pastebin.com/5X0t1KGs – Petah

2

Creazione di un sub-repo è una soluzione, ma è necessario effettuare tale sub-repo a submodule.

questo modo:

  • si mantiene un collegamento tra il normale contenuto e che il contenuto 'files'
  • se il contenuto dei 'files' si evolve un giorno, è possibile registrare la sua evoluzione nel repository principale
  • è possibile verifica il tuo repo principale senza "git submodule update" (cioè senza riempire il 'files' contenuto
  • su distribuzione, un git submodule update dopo la git submodule init sarà sufficiente per tornare ri versione ght del contenuto di "files".
6

Il codice sotto funziona su file cancellati così come modificati ignorarlo quando si esegue uno stato git.

git update-index --assume-unchanged dir-im-removing/ 

o un file specifico

git update-index --assume-unchanged config/database.yml 

Ignore modified (but not committed) files in git?

Attenzione: Il suggerimento sopra per i file eliminati quando si esegue un "git commit -am" include il file cancellato!

Una soluzione che avrebbe funzionato per me è quella di eliminare il file invece di renderlo vuoto. Questo è quello che ho usato per disattivare un file .htaccess.

10

Ignorare un'intera directory non ha funzionato. Ho dovuto fare questo:

for i in `git status | grep deleted | awk '{print $3}'`; do git update-index --assume-unchanged $i; done 
+2

Ho dovuto cambiare '$ 3' a' $ 2' git versione 2.3.2 – crizCraig

Problemi correlati