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
risposta
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).
Way 1 - REBASE continuamente
Supponiamo che ci sono 3 rami:
master
per pubblicoboo
per privati baar
per privati
Qualcosa di simile a questo:
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à:
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
:
fare samething su baar
ramo, e, infine, si otterrà:
Dopo un po 'sviluppato su maestro, ripetere questi passaggi e ottenere:
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
.
(2) Preparare un altro repo normale/semplice come un contenitore, qualcosa di simile:
(3) Quindi aggiungere quel repository di dati come un sottomodulo in questo repository:
Otterrete questi dopo commit:
(4) Anche in questo caso, aggiungere il repo pubblico, chiamato test
qui, come un modulo:
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.
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.
- 1. Clonazione di repository Git localmente
- 2. Come posso utilizzare Git localmente?
- 3. Come recuperare `.git/index` localmente?
- 4. git: Tirando solo determinati file
- 5. git difftool con solo file modificati
- 6. Come elencare i file con versione in git?
- 7. Cambia automaticamente il file di versione su commit con git
- 8. Trova localmente la versione installata di pywin32
- 9. SVN: mostra solo file locali con versione (riga di comando)?
- 10. Clonazione solo di una sottodirectory con git
- 11. Cambia app Versione con solo file IPA fornito (senza xcode)
- 12. Come inviare solo patch selezionate con git svn?
- 13. Git confronta la versione "base" con la versione "loro" di un file in conflitto?
- 14. GIT tiro: sostituire la versione locale con la versione remota
- 15. Come gitignore * solo * file?
- 16. Salvare i file localmente con l'elettrone
- 17. git: elenca solo i nuovi file
- 18. Git: rimuovendo un file dalla versione, ma non cancellandolo
- 19. Git/Mercurial localmente ontop di checkout cvs locale
- 20. git pull (solo aggiornamento file locale)
- 21. git: fase solo i file nuovi
- 22. ExternalInterface.addCallback di Actionscript funziona solo localmente, non in produzione
- 23. Aggiornamento autorizzazioni file solo in git
- 24. Versione di assembly fissa con versione di file incrementale automatica?
- 25. Versione dinamica da git con go get
- 26. git push solo parte di un repository
- 27. Come rimuovere un ramo localmente?
- 28. override git da Xcode con versione homebrew
- 29. Alias "git git" a solo "git"?
- 30. Git ignore solo push
Forse si dovrebbe avere clonato a livello locale il progetto ... –
Forse semplicemente non li aggiungono con 'git add' – Black
E aggiungerli ad .gitignore –