2013-03-21 7 views
6

Ho un file App.Local.config in cui ogni sviluppatore ha le proprie impostazioni. Non voglio che questo file venga controllato nel repository GIT come ogni volta che verrà sovrascritto da altre modifiche degli sviluppatori.GIT: Come mantenere i file ignorati quando si cambia succursale?

Quindi ho cancellato il file dal repository e l'ho aggiunto al file ignore. Ma ora quando gli sviluppatori cambiano ramo, App.Local.config viene eliminato dal loro filesystem locale.

In definitiva quello che vorrei è:

  1. nuovi cloni dev pronti contro termine, ottiene una versione iniziale di App.Local.config
  2. dev apporta modifiche al App.Local.config. Git ignorerà le modifiche e non lo stage/check-in
  3. rami dev switch, le modifiche a App.Local.config non andranno perse e il file non verrà eliminato.

Come posso farlo?

Grazie.

+0

Se il file viene correttamente ignorato, non deve essere toccato quando si passa da un ramo all'altro. Appare quando si digita 'git status'? –

+2

Sarà eliminato solo per il primo aggiornamento per tutti. Una volta aggiornati i repository di tutti, il file rimarrà e non verrà eliminato. – TheBuzzSaw

risposta

6

Ciò che probabilmente è successo è che hai rimosso il file dal tuo spazio di lavoro ma non dall'indice. Se l'hai fatto, git pensa che rimuovere questo file sia una modifica e lo rimuoverà da quel momento in poi.

La strada da percorrere è quella di rimuovere il file non si desidera tenere traccia più dall'indice con

git rm --cached App.Local.config 

e quindi aggiungere il file ai .gitignore Facendo che non avrete più problemi con il file

+1

@mswanson Se il file viene ignorato, è possibile cambiare ramo come desiderato - non verrebbe toccato. Quindi hai un solo problema: fornire gli sviluppatori con template per questo file. Ma dovresti farlo fuori dal coglione. – madhead

+0

se il file viene ignorato e fuori dall'indice le modifiche al file non vengono perse e il file non viene eliminato – iberbeu

+1

@iberbeu Ho lo stesso problema ma il file non è mai stato nell'indice. Ho iniziato un nuovo ramo con il flag --orphan, poi git rm --connesso tutto, ignorato alcuni file in .gitignore e commit. Quei file spariscono quando cambio succursali e non so come evitarlo! – splinter123

1

Sembra che questo file fosse in indice una volta. Quindi la sua cancellazione è una modifica. È possibile aggiungerlo a .gitignore o .git/info/exclude e quindi semplicemente ricrearlo su ogni macchina per sviluppatori.

0

si dovrebbe usare git rm --cached App.Local.config non solo in te ramo di lavoro, ma anche nel ramo che si desidera passare a, o si perderà la App.Local.config quando si passa indietro al ramo si è lavorato se si utilizza solo git rm --cached App.Local.config in quel ramo .