2014-09-04 6 views
6

Ho una cartella images che ho usato per essere tracciata e che ho untracked usando: git rm -r --cached images.Annulla localmente la cartella in git e spinga alla produzione senza cancellare

Ho anche aggiunto images/ al mio gitignore. Tuttavia, temo che quando eseguo il commit e accendi il mio server di produzione, la cartella delle immagini verrà eliminata. Il motivo è perché l'app github mostra effettivamente che i file sono stati cancellati.

Quindi, come evitare di eliminare i file eliminati localmente, quindi i file non tracciati e ignorati sul server di produzione su git pull?

+0

Un motivo in particolare per cui non si desidera che questa cartella sia sotto controllo di versione? – Jubobs

+4

Poiché le persone che gestiscono effettivamente il contenuto continuano a modificare il contenuto della cartella immagini tramite ftp e non git. Usare git per quello è eccessivo – Ortixx

risposta

6

Con git rm --cached, i file vengono rimossi da git, anche se sono ancora nella cartella locale. Quindi, dopo averlo push, i file su sever verranno eliminati e così anche il repository di altri quando si trovano su pull.

Un modo migliore è utilizzare git update-index.

git update-index --assume-unchanged images/* 

Dovrebbe soddisfare le vostre esigenze. L'unico problema è che se gli altri 'cambiano questi file immagine e spingeranno a git server, si otterranno comunque queste modifiche quando si pull.

1

In realtà l'ho fatto in un modo diverso. Dal momento che ci sono solo 2 persone che usano git (io e un altro sviluppatore), abbiamo solo sottratto le cartelle localmente. Ho quindi impegnato il nuovo .gitignore e lo ho tirato sul server di produzione. Successivamente ho rintracciato la cartella sul server di produzione e voilà!

0

Un altra alternativa da considerare che potrebbe essere migliore per i nuovi compagni di squadra sta usando il seguente in futuro per l'aggiunta di directory che sono necessari, ma omettendo il loro contenuto:

**/images/* 
!**/images/readme.md 

Dal Git non si occupano di vuoto directory, il trucco è dire a Git di non tracciare nulla all'interno della directory images. Ma per creare la directory in primo luogo, abbiamo bisogno di un file, quindi alla fine stiamo dicendo "non tenere traccia di nulla in questa directory eccetto per questa lettura".

Problemi correlati