KategorieProgramowanie

[GIT] Jak wstrzymać śledzenie zmian w pliku np. konfiguracyjnym ?

W projektach często spotykamy różne pliki konfiguracyjne, które w zależności od środowiska (deweloperskie, testowe, produkcyjne…) mają różną konfigurację. Jako że ustawienia konfiguracji mogą dość często się zmieniać to każdorazowo przy commicie pomijamy ten plik lub robimy dla niego osobnego commit-a. Jest to dość uciążliwe jednak da się z tym żyć, tylko po co ?

Z rozwiązaniem przychodzi nam sam system kontroli wersji. Jako że GIT jest bardzo rozbudowanym systemem pozwalającym na realizację danego zadania na kilka sposobów i tutaj możemy znaleźć kilka rozwiązań.

Pierwsze to dodanie pliku do magicznego pliku .gitignore, który mówi GIT-owi jakie pliki / katalogi ma ignorować. Jednak rozwiązanie ma tę wadę, że przy próbie sklonowania repozytorium zostaniemy pozbawieni pliku, który jest niezbędny do działania aplikacji. Oczywiście przed operacją klonowania możemy usunąć plik z pliku .gitignore, ale to powoduje jedynie że wykonujemy pracę w innym miejscu nie zaś ją minimalizujemy.

Kolejnym rozwiązaniem jest powiedzenie GIT-owi, że modyfikacje w danym pliku nas nie interesują i żeby ich nie śledził. Taka możliwość istnieje dzięki poleceniu update-index.

git update-index --assume-unchanged nazwa_pliku

Powyższe polecenie wstrzyma śledzenie zmian w pliku. Oczywiście istnieje możliwość odwrócenia tego stanu, a realizuje to zadanie poniższe polecenie, które wygląda niemal identyczne jak poprzednie.

git update-index --no-assume-unchanged nazwa_pliku

W zawiązku z tym że może być ciężko zapanować nad tym, które pliki są ignorowane w związku z czym pokażę wam polecenie które wyświetli listę plików w których zmiany są ignorowane przez GIT-a.

git ls-files -v | grep "^[[:lower:]]"

Jak że polecenie nie jest najprzyjemniejsze do wpisywania to możemy zdefiniować sobie alias (o sposobie definiowaniu aliasów już pisałem tutaj).

git config --global alias.ignored '!git ls-files -v | grep "^[[:lower:]]"'

Teraz wystarczy wywołać polecenie:

git ignored

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.