Generator .gitattributes
Ustal normalizację tekstu, bezpieczne EOL skryptów, wzorce binarne i zasady Git LFS.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator .gitattributes — spójne EOL, pliki binarne i Git LFS
Generator .gitattributes buduje politykę przechowywania plików w repozytorium Git. Ustawia automatyczne rozpoznawanie tekstu, wybrany koniec linii, bezpieczne wyjątki dla skryptów POSIX i Windows, szeroki zestaw formatów binarnych, opcjonalne wzorce Git LFS oraz pliki pomijane przez git archive.
Jak Git interpretuje atrybuty
Każdy wiersz składa się z wzorca ścieżki i atrybutów. Wpis * text=auto eol=lf prosi Git o automatyczne rozpoznanie tekstu, normalizację zawartości w indeksie i zapis LF w katalogu roboczym. Wariant crlf zachowuje normalizację w repozytorium, lecz wypisuje pliki tekstowe z CRLF. Po wyłączeniu przełącznika generator naprawdę pomija globalną regułę — nie dodaje ukrytego text=auto.
| Reguła | Znaczenie | Typowe użycie |
|---|---|---|
text=auto | Automatyczne rozpoznanie i normalizacja tekstu | Kod źródłowy, konfiguracja i dokumentacja |
eol=lf | LF w katalogu roboczym | Shell, Linux, kontenery i CI |
binary | Skrót dla -diff -merge -text | Obrazy, fonty, archiwa, audio i wideo |
filter=lfs | Filtr pointerów Git LFS | Duże zasoby, które muszą być wersjonowane |
export-ignore | Pomija ścieżkę w archiwum | Testy i konfiguracja repozytorium |
Końce linii i wykonywalne skrypty
Globalny wybór nie powinien zepsuć skryptów. Dlatego generator zawsze dopisuje *.sh, *.bash i *.zsh text eol=lf. Interpreter odczytuje shebang z pierwszego wiersza; CRLF może pozostawić niewidoczny znak \r w nazwie interpretera i zakończyć start komunikatem „bad interpreter”. Dla *.bat i *.cmd ustawiane jest natomiast eol=crlf.
Atrybut EOL nie ustawia bitu wykonywalnego. Uprawnienie jest osobną właściwością indeksu Git i na systemie uniksowym ustawiasz je przez chmod +x plik.sh oraz git add plik.sh. Zasady automatyzacji repozytorium możesz następnie powtórzyć w generatorze GitLab CI.
Pliki binarne bez fałszywych diffów
Lista obejmuje popularne obrazy PNG, JPEG, GIF, WebP, AVIF i ICO, dokumenty PDF, fonty, archiwa, multimedia oraz biblioteki wykonywalne. Oznaczenie binary wyłącza normalizację tekstu i próby automatycznego scalania. SVG nie trafia na listę, ponieważ jest tekstowym XML-em i sensowny diff bywa przydatny. Podobnie pliki JSON, YAML i źródła pozostają tekstem.
Jawne wzorce są czytelniejsze od polegania wyłącznie na heurystyce, ale nie powodują kompresji i nie zmniejszają historii. Zbędne artefakty powinny być ignorowane, zanim trafią do indeksu; odpowiednie reguły zbudujesz w generatorze .gitignore. Dla obrazów używanych w aplikacji można wcześniej ograniczyć rozmiar pliku, zamiast automatycznie przenosić każdy zasób do LFS.
Git LFS i walidacja wzorców
Po włączeniu LFS każda niepusta linia otrzymuje pełny zestaw filter=lfs diff=lfs merge=lfs -text. Powtórzenia są usuwane. Generator odrzuca znaki sterujące, spacje, prefiks !, komentarz zaczynający się od #, końcowy ukośnik i listy dłuższe niż 50 pozycji. Takie wartości są niejednoznaczne albo nie działają w atrybutach tak, jak użytkownicy oczekują.
Sam wpis nie przenosi istniejącej historii i nie instaluje rozszerzenia. Każdy współpracownik oraz runner CI potrzebuje Git LFS, a repozytorium wymaga inicjalizacji. Przed zatwierdzeniem sprawdź git check-attr -a -- ścieżka oraz git lfs track. Nie używaj LFS dla plików, które często muszą być scalane jak kod, manifesty czy małe SVG.
Wdrożenie i renormalizacja repozytorium
- Wybierz LF dla projektów uruchamianych na Linuksie lub świadomie wybierz CRLF dla tekstu roboczego Windows.
- Zostaw
text=auto, chyba że repozytorium ma już szczegółową politykę tekstu per rozszerzenie. - Włącz LFS tylko dla konkretnych, dużych formatów i usuń wzorce, których projekt nie przechowuje.
- Zapisz wynik jako
.gitattributesw korzeniu repozytorium, a następnie uruchomgit add --renormalize .. - Sprawdź diff. Renormalizację zatwierdź osobnym commitem, bez zmian logiki, aby recenzja była czytelna.
Ustawienia edytora warto zsynchronizować przez generator .editorconfig, a zgodność procesu wymusić także w generatorze GitHub Actions. .editorconfig wpływa na zapis w edytorze, a .gitattributes definiuje zachowanie Git — te pliki się uzupełniają.
Archiwa wydań z export-ignore
Opcja archiwum oznacza katalog .github, testy, phpunit.xml, .gitignore i sam .gitattributes jako export-ignore. Reguła działa tylko dla git archive; nie usuwa plików z repozytorium, klonu ani paczki utworzonej zwykłym programem ZIP. Przed publikacją sprawdź zawartość poleceniem git archive HEAD | tar -tf -.
Najczęściej zadawane pytania
Czy po dodaniu pliku wszystkie EOL zmienią się automatycznie?
Nie w istniejącym indeksie. Uruchom git add --renormalize ., obejrzyj diff i zatwierdź zmianę. Kolejne checkouty będą już stosować zadeklarowaną politykę.
Czy binary i Git LFS oznaczają to samo?
Nie. binary wyłącza traktowanie pliku jako tekstu, ale zawartość nadal trafia do zwykłych obiektów Git. LFS zastępuje ją małym pointerem i przechowuje dane w osobnym magazynie.
Dlaczego skrypty shell zawsze mają LF?
CRLF może dopisać znak carriage return do ścieżki interpretera w shebang i uniemożliwić uruchomienie. Jawny wyjątek LF chroni skrypty nawet wtedy, gdy globalnie wybrano CRLF.
Czy mogę wpisać katalog jako wzorzec LFS?
Końcowy ukośnik nie działa rekurencyjnie w regułach atrybutów. Użyj wzorca plików, na przykład assets/** albo assets/**/*.psd, zależnie od faktycznej potrzeby.
Czy .gitattributes zastępuje .editorconfig?
Nie. Git normalizuje dane podczas dodawania i checkoutu, a EditorConfig instruuje edytor podczas zapisu. Uzgodnij w obu plikach EOL, aby użytkownik nie widział ciągłych lokalnych zmian.