Molte persone ti consigliano di usare git update-index --assume-unchanged
. In effetti, questa potrebbe essere una buona soluzione, ma solo a breve termine.
Quello che probabilmente vuoi fare è questo: git update-index --skip-worktree
.
(La terza opzione, che probabilmente non vuoi è è: git rm --cached
Manterrà il file locale, ma verrà contrassegnato come rimosso dal repository remoto.)
Differenza tra le prime due opzioni?
assume-unchanged
è consentire temporaneamente di nascondere le modifiche da un file. Se si desidera nascondere le modifiche apportate a un file, modificare il file, quindi verificare un altro ramo, è necessario utilizzare no-assume-unchanged
quindi probabilmente le modifiche apportate.
skip-worktree
ti seguirò qualunque sia la tua filiale, con le tue modifiche!
Caso d'uso di assume-unchanged
Presuppone che questo file non debba essere modificato e ti dà un risultato più pulito quando lo fai git status
. Ma quando effettui il checkout su un altro ramo, devi ripristinare il flag e confermare o archiviare le modifiche prima. Se tiri con questa opzione attivata, dovrai risolvere i conflitti e git non si fonderà automaticamente. In realtà nasconde solo le modifiche ( git status
non ti mostrerà i file contrassegnati).
Mi piace usarlo quando voglio smettere di tracciare le modifiche solo per un po '+ commettere un mucchio di file ( git commit -a
) relativi alla stessa modifica.
Caso d'uso di skip-worktree
Hai una classe di installazione che contiene parametri (es. Incluse le password) che i tuoi amici devono cambiare di conseguenza alla loro configurazione.
- 1: crea una prima versione di questa classe, compila i campi che puoi compilare e lascia gli altri vuoti / nulli.
- 2: eseguire il commit e inviarlo al server remoto.
- 3:
git update-index --skip-worktree MySetupClass.java
- 4: aggiorna la tua classe di configurazione con i tuoi parametri.
- 5: torna a lavorare su un'altra funzionalità.
Le modifiche apportate ti seguiranno indipendentemente dal ramo. Avvertenza: se anche i tuoi amici vogliono modificare questa classe, devono avere la stessa configurazione, altrimenti le loro modifiche verrebbero trasferite al repository remoto. Durante il pull, la versione remota del file dovrebbe sovrascrivere la tua.
PS: fai l'uno o l'altro, ma non entrambi poiché avrai effetti collaterali indesiderati. Se vuoi provare un'altra bandiera, dovresti prima disabilitare quest'ultima.
.csproj
file, che è una parte molto importante di qualsiasi progetto. Modifiche al.csproj.user
file o qualsiasi.Publish.XML
file che posso capire completamente non il monitoraggio, ma sono incuriosito dal motivo per cui non vorresti tracciare il.csproj
...