2016-03-08 17 views
6

Ho un progetto con due rami foo e baar. In questo progetto sono presenti i file di configurazione database1.properties e database1.properties in cui sono archiviate le proprietà del database, ad esempio il nome dello schema e la password dello schema. Quando sto lavorando su foo branch, il nome dello schema è foo e password is foo e quando sto lavorando su baar branch il nome dello schema è baar e la password è baar. Come dire a Git che questi file di proprietà sono solo per il mio sistema locale e non dovrebbero essere trasferiti al repository di origine? Io uso egit e anche tortoiseGit.come file di versione SOLO localmente con git

+0

Forse si dovrebbe avere clonato a livello locale il progetto ... –

+0

Forse semplicemente non li aggiungono con 'git add' – Black

+1

E aggiungerli ad .gitignore –

risposta

3

Con un singolo ramo non è possibile impedire che vengano premuti i file selezionati.

Quando il ramo viene premuto, tutti i commit verranno inviati al telecomando.

Per aggirare il problema si potrebbe avere le modifiche (specifiche per locale) in un ramo diverso (foo-local, bar-local ecc) e ogni volta che si desidera che questi cambiamenti nel sistema locale, utilizzare git merge local-branch --no-commit --no-ff o comando simile a fondersi in ramo reale (Questa volontà non unire le modifiche specifiche locali al ramo di monitoraggio remoto). Una volta che hai finito, puoi scartare queste modifiche (tuttavia queste modifiche saranno sempre presenti nel ramo locale e potranno essere applicate al ramo attuale ogni volta che lo desideri).

1

Way 1 - REBASE continuamente

Supponiamo che ci sono 3 rami:

  • master per pubblico
  • boo per privati ​​
  • baar per privati ​​

Qualcosa di simile a questo:

The 2 branches

avete sviluppato qualcosa sul master ramo, poi rebase il foo e il ramo Baar sul master. È necessario (1) Acquista foo, (2) REBASE foo su master, (3) Acquista baar, (4) REBASE baar sul maestro, poi diventerà:

enter image description here

Nota: devono ripetere questi passaggi ancora e ancora.

Way 2 - Unire

Supponiamo che gli stessi 3 rami.

Checkout foo, e si fondono master in foo:

enter image description here

fare samething su baar ramo, e, infine, si otterrà:

enter image description here

Dopo un po 'sviluppato su maestro, ripetere questi passaggi e ottenere:

enter image description here

Way 3 - modulo

Le suddette vie 2 è un po 'pericoloso, se si spinge tutto ramo a distanza. In questo modo è più complesso, è necessario sapere come utilizzare il sottomodulo, ma mi piace di più. :)

(1) Preparare un repository dati per database privato, è possibile verificare la filiale tra foo/baar.

enter image description here

enter image description here

(2) Preparare un altro repo normale/semplice come un contenitore, qualcosa di simile:

enter image description here

enter image description here

(3) Quindi aggiungere quel repository di dati come un sottomodulo in questo repository:

enter image description here

Otterrete questi dopo commit:

enter image description here

enter image description here

(4) Anche in questo caso, aggiungere il repo pubblico, chiamato test qui, come un modulo:

enter image description here

enter image description here

Per il momento, è possibile sviluppare in quel test pronti contro termine, e checkout qualunque ramo di pronti contro termine i dati sul lato opposto.

Nota 1: È necessario regolare bene il percorso.

Nota 2: se non ti piace il sottomodulo, puoi semplicemente usare una cartella come contenitore, quindi inserire i due repo in esso.

Way 4 - si fondono con senza commettere o squash

Come this answer (da @Royal Pinto) ha detto, mostro l'operazione TortoiseGit qui.

enter image description here

enter image description here

Nota: i dati privati ​​è stato messo in scena in un file di indice. In modo che il prossimo comando di commit lo impegna in repo.

Problemi correlati