Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Windows - git e file da non tracciare
Forum - Windows - git e file da non tracciare

Avatar
archemi (Normal User)
Pro


Messaggi: 70
Iscritto: 08/01/2014

Segnala al moderatore
Postato alle 20:23
Martedì, 21/11/2017
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?

PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 20:48
Martedì, 21/11/2017
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à.

PM Quote
Avatar
archemi (Normal User)
Pro


Messaggi: 70
Iscritto: 08/01/2014

Segnala al moderatore
Postato alle 21:01
Martedì, 21/11/2017
si è come se dicessi questo file non lo tracciare e non lo togliere dal locale

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 21:07
Martedì, 21/11/2017
Codice sorgente - presumibilmente Plain Text

  1. echo "config.php" >> .gitignore
  2. git add .gitignore


Ultima modifica effettuata da pierotofy il 21/11/2017 alle 21:09


Il mio blog: https://piero.dev
PM Quote
Avatar
archemi (Normal User)
Pro


Messaggi: 70
Iscritto: 08/01/2014

Segnala al moderatore
Postato alle 21:12
Martedì, 21/11/2017
Avevo già provato ma ha due difetti:
- toglie il file dal git remoto
- quando faccio il pull lo elimina anche dal locale

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:04
Mercoledì, 22/11/2017
: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: https://piero.dev
PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 18:31
Mercoledì, 22/11/2017
Testo quotato

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.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 22:41
Mercoledì, 22/11/2017
Chiedo scusa, non avevo capito bene.

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

Codice sorgente - presumibilmente Plain Text

  1. 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 il 22/11/2017 alle 22:42


Il mio blog: https://piero.dev
PM Quote
Avatar
archemi (Normal User)
Pro


Messaggi: 70
Iscritto: 08/01/2014

Segnala al moderatore
Postato alle 11:07
Venerdì, 24/11/2017
Ma quanto vi voglio bene!
Perfetto

Difatti avevo preparato un config.dist.php

Ultima modifica effettuata da archemi il 24/11/2017 alle 11:08
PM Quote