2016-05-11 40 views
6

Prima di tutto, ho visto .vs\config\applicationhost.config in source control.Perché applicationhost.config ancora aggiunto al controllo del codice sorgente anche pensato che sia in gitignore

Stiamo lavorando in una squadra e Visual Studio cambia percorso all'interno del file applicationhost.config. Dobbiamo escluderlo. Nel mio file .gitignore, ho aggiunto:

/.vs/config/applicationhost.config

Tuttavia, in ogni commit, questo è ancora una volta aggiunto al git. Prima dell'aggiornamento 2 VS2015, non era un problema, ma qualcosa è cambiato in integrazione git con VS dopo questo aggiornamento e ora viene incluso. Ogni volta che i miei colleghi eseguono modifiche al ramo, il loro IIS Express fallisce a causa delle modifiche a questo file (ha percorsi locali ai percorsi del mio PC, ecc.) E viceversa.

Come faccio a tirare questo file fuori dal controllo del codice sorgente del tutto?

+0

Possibile duplicato di [Ignora file che sono già stati impegnati in un repository Git] (http://stackoverflow.com/questions/1139762/ignore-files-that-have-already-been-committed-to-a- git-repository) – MrTux

risposta

5

provare il comando:

git rm /.vs/config/applicationhost.config 

quindi eseguire il commit modifiche al repository.

La linea in .gitignore solo dare informazioni a git, che questo file non dovrebbe essere elencato come "i file non ancora" in uscita di stato git

+0

Perché questo è stato votato? Il file è generato da VS, l'eliminazione del file non sembra causare alcun problema per VS. Aggiungendolo a .gitignore e cancellandolo dal repository sembra corretto. Mi sto perdendo qualcosa? –

+0

Si è guardato un po 'di più e ha trovato questa domanda. http: // stackoverflow.it/questions/6313126/how-to-remove-a-directory-in-my-github-repository Quale ha le risposte migliori. –

12

Avete applicationhost.config file già in archivio prima di aggiungerlo al .gitignore di file?

Se è così, è necessario utilizzare il comando git rm --cached [file].

Scopo del file .gitignore è di mantenere i file non tracciati non tracciati, quindi non influirà sui file già tracciati.

EDIT:

Come ho completamente dimenticato: Sopra soluzione funziona per repository, in modo che tutti gli sviluppatori di lavoro sarà costretto a mantenere la propria copia.

Per evitare git di rilevare cambiamenti si dovrebbe anche usare questo: git update-index --assume-unchanged [path_or_file] E se - in futuro - si vorrebbe iniziare nuovamente il monitoraggio modifiche è necessario ripristinare aggiornamento tramite: git update-index --no-assume-unchanged <file>

E per vedere i file contrassegnati con il flag --assume-uchanged è possibile utilizzare questo: git ls-files -v | grep '^[[:lower:]]' Vedere documentazione per git ls-files.

Credo che il post di blog this possa essere più descrittivo.

+0

Ciò ha rimosso il file da git. Poi ho spinto, il mio amico ha tirato e il problema continua ancora. –

+0

Ora ci sono due opzioni: l'amico può mantenere la propria copia locale usando le stesse istruzioni, oppure è possibile aggiornare l'indice tramite: 'git update-index --assume-unchanged'. Aggiornerò la risposta in un secondo. –

+0

@ CanPoyrazoğlu Non sono sicuro di come funziona la notifica su SO, quindi per ogni evenienza: ho aggiornato la risposta. Spero che ti aiuti! –