Przejdź do treści

Git. Globalna konfiguracja

W dobie dzisiejszej popularności systemu kontroli wersji Git, chciałem przedstawić Tobie jak wykorzystać globalną konfigurację, aby plik .gitignore w dowolnym projekcie nie zawierał nadmiarowych informacji.

Baner promujący artykuł

Częsty problem

Wiele razy widzę, jak w projektach na GitHubie dodane są katalogi z konfiguracją edytorów, które są zupełnie niepotrzebne osobom trzecim, wykorzystującym ten projekt do własnych celów.

WebStorm i jego katalog .idea

I tak na przykład WebStorm (edytor firmy JetBrains) tworzy katalog .idea, w którym zapisuje różne ustawienia projektów.

Ten katalog jest pomocny, kiedy korzystamy z zaawansowanych funkcjonalności edytora, na przykład wykluczania katalogów. Proces polega na wyłączeniu z procesu indeksowania oraz wyszukiwania dowolnych katalogów, na przykład katalogów node_modules albo bower_components zawierających zależności projektów.

Jak wykluczyć katalog?

Aby "wyłączyć" katalog z projektu należy kliknąć prawym przyciskiem myszy na katalogu oraz wybrać: Mark Directory as -> Excluded

Od tej pory wybrany katalog nie będzie brany pod uwagę przez edytor. Informacja o tym stanie zostanie zapisana w katalogu .idea. Dlatego też trzeba wykluczyć katalog .idea z systemu kontroli wersji.

Nie ma absolutnie żadnych przesłanek, aby katalog .idea był wersjonowany wiec nie ma sensu dodawać go do Gita.

Aby to zrobić programiści często w pliku .gitignore, w katalogu głównym projektu dodają linijkę, która wyklucza katalog .idea. Niestety informacja ta nie powinna znaleźć się w pliku .gitignore projektu, bo nie jest z nim związana, dotyczy wyłącznie konfiguracji środowiska programisty.

Jak wykorzystać plik .gitignore w katalogu użytkownika?

Git daje możliwość stworzenia pliku .gitignore w katalogu projektu, aby wykluczyć rzeczy projektowe, oraz w katalogu użytkownika, aby wykluczyć katalogi i pliki, które zależą od wybranego środowiska developerskiego (edytor, system operacyjny, etc.).

Informacja o wykluczeniu katalogu .idea powinna znaleźć się w pliku .gitignore, który znajduje się w katalogu użytkownika. Jeśli taki plik nie istnieje, warto go stworzyć.

Każdy system operacyjny tworzy pliki ukryte (tymczasowe), których także nie ma sensu dodawać do systemu kontroli wersji.

Nie wyobrażam sobie, że miałbym w każdym projekcie dopisywać do pliku .gitignore informację, aby katalog .idea był ignorowany, albo jakiś inny katalog z ustawieniami edytora, którego obecnie używam.

Jak skonfigurować globalny plik .gitignore?

Aby skonfigurować Gita proponuję wykonać następujące polecenia:

# ~ (tylda) znak ten odnosi się do katalogu domowego użytkownika
touch ~/.gitconfig

git config --global core.excludesfile ~/.gitignore
vim ~/.gitignore

# W pliku ~/.gitignore dodaj katalog .idea/
# A teraz wykonaj w katalogu projektu polecenie `git status`

Moja konfiguracja

Przedstawiam zawartość mojego pliku ~/.gitignore

# Windows
$RECYCLE.BIN/
Desktop.ini
*.db
*.autosave

# Linux
*~
.directory

# macOS
.Spotlight-V100/
.Trashes/
.DS_Store
._*

# Edytory
.idea/
.settings/
.project
nbproject/
*.swp
.vscode

Dodałem katalog .idea do projektu, co robić?

Ignorowanie katalogu .idea nie usunie go z systemu kontroli wersji Git.

Po tym jak dodałeś w globalnym pliku .gitignore informację o tym, żeby Git ignorował katalog .idea, należy usunąć ten katalog poleceniem (będąc w katalogu projektu)

git rm -rf .idea

Oraz stworzyć rewizję (commit) z tą zmianą:

git commit .idea -m "Remove WebStorm settings directory"