2010-07-23 17 views
10

Stiamo migrando da Perforce a GIT. In forza, c'erano alcuni file che avrei voluto nel repository, ma non dovrebbero essere controllati regolarmente dai singoli sviluppatori. Cose come i file di progetto di Eclipse. Ogni sviluppatore potrebbe ottenere il file .project iniziale, ma poi modificarlo leggermente per il proprio ambiente.Contrassegnare un file nel repository GIT come temporaneamente ignorato

Con P4, potevo prendere quei file, metterli in un elenco di modifiche separato e dimenticarli. La sincronizzazione non li sovrascriverebbe e non verrebbero commessi quando ho eseguito il commit dell'elenco delle modifiche predefinito.

C'è un modo per fare qualcosa di simile con GIT?

Mi piacerebbe essere ancora in grado di "git commit -a"

+0

possibile duplicato di [Configura file di configurazione specifici della macchina] (http://stackoverflow.com/questions/1396617/committing-machine-specific-configuration-files) – Senseful

+0

Possibile duplicato di [Can I 'git commit' un file e ignora il suo modifiche ai contenuti?] (https://stackoverflow.com/questions/3319479/can-i-git-commit-a-file-and-ignore-its-content-chang es) –

+0

* Mi piacerebbe ancora essere in grado di "git commit -a" * - questo è proprio il tuo problema, proprio lì. Con 'git', in genere non si limita a commettere tutto, si rivede ciò che è cambiato con' git status' e 'git diff', si decide cosa aggiungere (o in' .gitignore'), e quindi si esegue il commit esattamente di ciò che serve . Questo flusso di lavoro assicura che i tuoi commit non contengano alcun tipo di oggetto come file o file temporanei accidentalmente verificati, ecc. Vedi, creare una storia 'git' sta raccontando una storia, e meglio lo racconti, più utile sarà. Meglio non macchiarlo con una commessa senza cervello. – cmaster

risposta

5

Se avete bisogno di una base comune per coloro (.project, .classpath, ...), è possibile:

  • versione modello di tali file (.project_tpl, .classpath_tpl, ...)
  • utilizzare un filter driver per generare, al momento della partenza, i file effettivi (che non verrà versione, e solo modificati a livello locale da parte degli sviluppatori)

alt text

(la 'clean' passo durante commettere non avrebbe fatto qualsiasi cosa per quei modelli.
Solo la 'smudge' passo è qui utilizzato, per generare i file privati)

Nota: questo è un leggero "uso improprio" di un driver di filtro, che dovrebbe elaborare solo il contenuto dei file, per non generare nuovi.
Ma potrebbe aiutare nello scenario (purché l' 'smudge' copione non sovrascrive i file ciecamente eclissi se capita di essere già qui.)

+1

Così ho potuto creare una routine di sbavatura piuttosto muta che rimuove .tmpl da qualsiasi cosa con un'estensione .tmpl. Potrei quindi aggiungere .project.tmpl o configuration.xml.tmpl a git e quando le persone li estraggono ottengono .project o configuration.xml Immagino che potrei anche aggiungere quei file generati a .gitignore ed essere d'oro. –

+0

@Marc: questa è l'idea :) – VonC

10

Probabilmente si sta cercando

git update-index --assume-unchanged .project

+0

C'è un modo per garantire che questo sia abilitato quando un utente clona il repository, piuttosto che fare affidamento su di essi ricordando di eseguirlo? – Programster

+0

Non che io sappia. –

Problemi correlati