Oppure

Loading
21/11/17 19:23
archemi
Ciao a tutti
volevo chiedere se lo sapete. Praticamente ho un sito che sto sviluppando di time tracker e nello stesso momento faccio commit ad ogni modifica su github (pubblico). Vorrei evitare che il file config.php su sui ho i dati di accesso al database più le constanti sia "committato". Nel senso che vorrei tenere il file ma se lo metto nel file .gitignore poi al primo "git pull origin master" mi cancella quello locale.

Invece quello che vorrei ottenere è:
- sul repository remoto (github) tenere la versione generale del file
- sul mio locale invece tenere quello con i dati di accesso al mio db
- quando faccio un commit, non mi carichi il mio su remoto, e idem quando faccio un pull mi cancelli quello locale.

C'è soluzione o devo rassegnarmi?
aaa
21/11/17 19:48
lumo
Purtroppo non è una situazione molto comoda,puoi usare git fetch e poi git rebase, magari c'è un'opzione per farlo direttamente con pull. Controllo meglio dopo,ma di fatto tuoi che la tua versione locale e quella remota siano sempre differenti, quindi è necessario un accorgimento per capire quale delle due versioni ha priorità.
aaa
21/11/17 20:01
archemi
si è come se dicessi questo file non lo tracciare e non lo togliere dal locale
aaa
21/11/17 20:07
pierotofy
echo "config.php" >> .gitignore
git add .gitignore
Ultima modifica effettuata da pierotofy 21/11/17 20:09
Il mio blog: piero.dev
21/11/17 20:12
archemi
Avevo già provato ma ha due difetti:
- toglie il file dal git remoto
- quando faccio il pull lo elimina anche dal locale
aaa
22/11/17 15:04
pierotofy
:noway:

Devi aver sbagliato qualcosa. .gitignore comunica a git di ignorare i files presenti nella lista al suo interno. Non rimuove nulla.
Il mio blog: piero.dev
22/11/17 17:31
lumo
Postato originariamente da pierotofy:

:noway:

Devi aver sbagliato qualcosa. .gitignore comunica a git di ignorare i files presenti nella lista al suo interno. Non rimuove nulla.

Da quello che ho capito archemi non vuole che il file sia ignorato, ma vuole che sia tracciato con git e la versione remota sia un "config.php" generico, mentre quella locale un "config.php" modificato.

Di fatto è un po' un controsenso.

La soluzione più ragionevole sarebbe avere due repository, uno pubblico e uno privato, dove quello privato è praticamente un fork di quello pubblico con in più un commit che modifica config.php.
In questo modo il deploy lo si dovrebbe effettuare da questo secondo repo.

Altrimenti tenendo un unico repository remoto, vedo due strade: avere il branch master con config.php pulito e un altro branch con config.php modificato. Le modifiche al resto del codice si fanno su master e si pushano al remoto, e poi si integra con rebase o con merge quello che serve nell'altro branch.
Altrimenti si può lavorare con solamente master, ma bisognerà ogni volta stare attenti a integrare le modifiche.
Senza parlare del rischio di pushare per sbaglio informazioni sensibili.
aaa
22/11/17 21:41
pierotofy
Chiedo scusa, non avevo capito bene.

git offre questo un comando per evitare di tracciare i cambiamenti:

git update-index --assume-unchanged config.php


Pero' e' da fare ogni volta che viene fatto un clone.

Solitamente si aggiunge un file "config.php.example" e nelle istruzioni di build lo si rinonima in config.php, aggiungendo "config.php" nel .gitignore.
Ultima modifica effettuata da pierotofy 22/11/17 21:42
Il mio blog: piero.dev