Mam kilka plików w witrynie CodeIgniter, które będę chciał mieć w repozytorium, ale nie będę śledził żadnych zmian.
Na przykład wdrażam nową instalację tego frameworka na nowym kliencie, chcę pobrać następujące pliki (mają wartości domyślne CHANGEME) i muszę tylko wprowadzić zmiany specyficzne dla tego klienta (poświadczenia bazy danych, informacje o adresie e-mail, niestandardowe CSS).
// the production config files i want the files but they need to be updated to specific client needs
application/config/production/config.php
application/config/production/database.php
application/config/production/tank_auth.php
// index page, defines the environment (production|development)
/index.php
// all of the css/js cache (keep the folder but not the contents)
/assets/cache/*
// production user based styling (color, fonts etc) needs to be updated specific to client needs
/assets/frontend/css/user/frontend-user.css
Obecnie jeśli uruchomię
git clone [email protected]:user123/myRepo.git httpdocs
a następnie edytuj pliki powyżej, wszystko jest świetne. Do momentu wydania poprawki lub poprawki i uruchomienia git pull
. Wszystkie moje zmiany są następnie nadpisywane.
Odpowiedzi:
git ma na to inne rozwiązanie. Najpierw zmień plik, którego nie chcesz śledzić, i użyj następującego polecenia:
a jeśli chcesz ponownie śledzić zmiany, użyj tego polecenia:
Dokumentacja git-update-index
źródło
--skip-worktree
opcja lepiej pasuje do tej pracy niż--assume-unchanged
.Aby wyciągnąć odpowiedź z komentarzy do innej odpowiedzi:
$ git update-index --skip-worktree FILENAME
Wydaje się być lepszą opcją niż
--assume-unchanged
Więcej informacji na ten temat można znaleźć tutaj: Git - różnica między „zakładaj niezmienione” a „pomiń”
źródło
W przypadku moich projektów Code Igniter przechowuję database.php.example i config.php.example w repozytorium.
Następnie dodam config.php i applications / config / database.php do pliku .gitignore .
Wreszcie, kiedy wdrażam, mogę skopiować pliki .example (do config.php i database.php), dostosować je i nie będą śledzone przez GIT.
źródło
Umieściłbym je w twoim
.gitignore
pliku i po prostu skopiowałem je ręcznie w razie potrzeby.Więc szkieletowa nazwa pliku byłaby w git, ignorowane nazwy plików nie byłyby w git (ale byłyby w .gitignore). W ten sposób, gdy ręczny krok do skopiowania ich do „faktycznego” z „szablonu” (być może lepszej nazwy niż szkielet) jest natychmiast ignorowany.
źródło
git rm <file>
. Celem jest IE: plik config.php. Chcę zachować plik konfiguracyjny, ale oczywiście nie chcę śledzić poświadczeń bazy danych od klienta do klienta, ponieważ są one różne.git add file1
a następnie edytuj.gitignore
plik. Zatwierdzony plik pozostanie tam i nie będzie aktualizowany. Lub: Możesz dodać plik do,.gitignore
a następnie dodać za pomocą,git add --force file1
aby zmusić plik. Możesz użyć drugiej opcji, ilekroć musisz zastąpić plikPodane odpowiedzi tylko częściowo rozwiązują problem, ale wprowadzają jeszcze więcej problemów.
Musiałem zachować plik „Web.Local.config”. Jedynym rozwiązaniem, które działało dla mnie, było:
1. Wyklucz plik z projektu
2. Utwórz osobną kopię pliku jako Web.LocalTemplate.config
Teraz, gdy „Web.LocalTemplate.config” jest śledzony przez Git, wszyscy programiści mogą go używać jako punktu wyjścia. Jednak „Web.Local.config”, nie będący częścią projektu, zostanie automatycznie zignorowany.
źródło
git update-index --skip-worktree FILENAME
rozwiązujesz problem tylko częściowo, a nawet dodajesz więcej problemów? Rozwiązuje dokładnie to, co próbujesz zrobić. Próbowałeś?