Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Generator git hooków

Zbuduj wykonywalne hooki do lintowania, kontroli commitów i testów przed wysłaniem zmian.

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
Wzorzec wiadomości commita
Hooków: 3

Uruchom skopiowany instalator w katalogu repozytorium przez sh install-hooks.sh. Skrypt zapisze hooki w .git/hooks/ albo .husky/ i wykona chmod +x. Husky musi być wcześniej zainstalowany w projekcie.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Generator git hooków — automatyczna kontrola przed commitem i push

Generator git hooków tworzy przenośny instalator POSIX shell, który zapisuje wybrane skrypty pre-commit, commit-msg i pre-push we właściwym katalogu oraz nadaje im prawo wykonywania. Wybierasz natywne hooki Git albo katalog Husky, podajesz polecenia linta i testów, a wynik uruchamiasz raz w katalogu repozytorium.

Co dokładnie powstaje

Wynik nie jest luźnym fragmentem kilku plików, lecz kompletnym skryptem instalacyjnym zaczynającym się od #!/usr/bin/env sh i set -eu. Dla zwykłego trybu katalog hooków jest pobierany poleceniem git rev-parse --git-path hooks, więc działa także wtedy, gdy Git używa niestandardowej ścieżki. Dla Husky celem jest .husky/. Każdy zapisany hook dostaje własny shebang, tryb bezpiecznego przerywania oraz chmod +x.

HookMoment uruchomieniaZadanie generatora
pre-commitPrzed utworzeniem commitaUruchamia wskazany lint, np. ESLint, Ruff lub PHP_CodeSniffer
commit-msgPo zapisaniu wiadomościSprawdza pierwszy argument hooka wyrażeniem zgodnym z grep -E
pre-pushPrzed wysłaniem referencjiUruchamia testy i blokuje push, gdy polecenie zwróci błąd
InstalatorJednorazowo w repozytoriumTworzy katalog, zapisuje pliki i ustawia bit wykonywalny

Jak użyć wygenerowanego instalatora

  1. Wybierz preset Node, PHP, Python lub Husky. Preset ustawia sensowne polecenia startowe, które możesz dowolnie zmienić.
  2. Zaznacz tylko te etapy, które mają obowiązywać. Puste polecenie albo wartość wielowierszowa jest odrzucana, aby przypadkowy enter nie zmienił struktury skryptu.
  3. Skopiuj wynik do pliku, na przykład install-hooks.sh, w katalogu głównym klonu.
  4. Uruchom sh install-hooks.sh. Instalator zapisze hooki i wykona chmod +x; nie trzeba ręcznie poprawiać uprawnień każdego pliku.
  5. Wykonaj próbny commit i push. Sam instalator można potem usunąć albo przechowywać w repozytorium jako dokumentację polityki.

Reguły wiadomości warto zestawić z zasadami pracy zapisanymi obok generatora .dockerignore. Kontrole uruchamiane lokalnie powinny mieć odpowiednik w generatorze GitHub Actions albo generatorze GitLab CI, ponieważ lokalny hook można pominąć.

Shell, cudzysłowy i bezpieczny zapis

Instalator korzysta wyłącznie ze składni POSIX sh, a każdą linię hooka zapisuje przez printf z bezpiecznym cytowaniem. Dzięki temu apostrof w wyrażeniu regularnym nie kończy przedwcześnie literału instalatora. Polecenia linta i testów są zachowywane jako pojedyncze linie: zostaną wykonane dopiero przez właściwy hook, a nie w chwili generowania pliku w przeglądarce.

Hook commit-msg sprawdza, czy Git przekazał nazwę pliku wiadomości, a następnie używa grep -Eq --. Separator -- chroni wzorzec zaczynający się od myślnika przed potraktowaniem jak opcja. Domyślna reguła akceptuje popularne typy Conventional Commits, opcjonalny zakres w nawiasie, dwukropek, spację i opis.

Natywne hooki a Husky

Natywne pliki w .git/hooks dotyczą konkretnego klonu i nie są normalnie wersjonowane. Są lekkie i nie wymagają Node, ale każda osoba musi uruchomić instalator. Husky trzyma skrypty w .husky, więc można je commitować i instalować podczas instalacji zależności. Generator nie dodaje przestarzałego ładowania pliku _/husky.sh; generowane hooki są samodzielnymi skryptami.

Husky nadal musi być wcześniej zainstalowany i aktywowany w projekcie. Generator nie edytuje package.json i nie uruchamia menedżera pakietów. Pliki pomocnicze repozytorium uporządkujesz z generatorem .gitignore, aby lokalne wyniki linta i testów nie trafiły przypadkiem do historii.

Ograniczenia i polityka zespołu

Hook jest barierą szybkiej informacji, a nie zabezpieczeniem serwera. Git pozwala użyć --no-verify, dlatego wymagane testy muszą działać ponownie w CI. Polecenia podajesz samodzielnie i powinny pochodzić z zaufanej konfiguracji projektu. Generator nie uruchamia ich, nie sprawdza dostępności binarek i nie instaluje zależności.

Warto utrzymywać hooki szybkie: lint zmienionych plików zwykle nadaje się do pre-commit, pełny zestaw testów do pre-push, a kosztowne skany do CI. Gdy test trwa kilka minut, ludzie częściej go omijają. Komunikat błędu powinien mówić, jak uruchomić poprawkę lokalnie i co dokładnie zablokowało operację.

Najczęściej zadawane pytania

Dlaczego hook nie uruchamia się po skopiowaniu pliku?

System uniksowy wymaga bitu wykonywalnego. Wygenerowany instalator sam wykonuje chmod +x. Jeśli plik został przeniesiony inną metodą, sprawdź ls -l i ponownie ustaw uprawnienie.

Czy hooki działają w Windows?

Tak w Git Bash, WSL lub innym środowisku z POSIX sh. Skrypty muszą mieć końce linii LF. W natywnym PowerShell potrzebny byłby osobny wrapper, którego ten generator nie tworzy.

Czy mogę użyć polecenia z argumentami?

Tak. Pole takie jak npm test -- --runInBand pozostaje jedną linią i zostanie wykonane przez hook. Wielowierszowe fragmenty są celowo odrzucane; rozbudowaną logikę lepiej umieścić w wersjonowanym skrypcie projektu.

Jak zmienić format wiadomości commita?

Podaj wyrażenie regularne rozszerzone obsługiwane przez grep -E. Generator bezpiecznie cytuje apostrofy, ale nie zmienia znaczenia operatorów. Najpierw przetestuj przykładowe wiadomości w lokalnym terminalu.

Czy hook zastępuje pipeline CI?

Nie. Hook daje szybki wynik przed commitem lub push, lecz można go pominąć i działa tylko w skonfigurowanym klonie. Pipeline na serwerze jest ostatecznym, powtarzalnym warunkiem scalenia zmian.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!