Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

Git deploy na hostingu — automatyczny deployment przez git push

Opublikowano: 8 kwietnia 2026 · Kategoria: Hosting

Krótka odpowiedź: Na hostingu z SSH możesz deployować przez git push używając bare repo + post-receive hook. Bez SSH: użyj GitHub Actions + rsync — działa z każdym hostingiem. Obie metody eliminują ręczne wgrywanie plików przez FTP.

Metody git deploy — porównanie

Metoda Wymagania Trudność Najlepiej dla
Bare repo + post-receive hook SSH + Git na serwerze Średnia VPS, zaawansowani
GitHub Actions + rsync SSH (klucze), GitHub Niska Każdy hosting z SSH
GitHub Actions + FTP FTP (login/hasło) Niska Hosting bez SSH
cPanel Git Version Control cPanel hosting Bardzo niska Smarthost, hostingi cPanel
DeployHQ / Buddy.works Zewnętrzna usługa Niska Zespoły, wiele serwerów

Metoda 1: Bare repo + post-receive hook

# 1. Na SERWERZE (przez SSH) — utwórz bare repo
mkdir -p ~/repos/moja-strona.git
cd ~/repos/moja-strona.git && git init --bare
# 2. Utwórz post-receive hook
nano hooks/post-receive
# --- zawartość hooka: ---
#!/bin/bash
GIT_WORK_TREE=/home/uzytkownik/public_html
GIT_DIR=/home/uzytkownik/repos/moja-strona.git
git checkout -f main
# opcjonalnie: cd $GIT_WORK_TREE && composer install --no-dev
# 3. Nadaj uprawnienia wykonania
chmod +x hooks/post-receive
# 4. LOKALNIE — dodaj remote i pushuj
git remote add hosting ssh://[email protected]/~/repos/moja-strona.git
git push hosting main

Metoda 2: GitHub Actions + rsync

Najprostsze rozwiązanie — nie wymaga konfiguracji na serwerze, działa przez klucze SSH:

# .github/workflows/deploy.yml
name: Deploy
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Deploy via rsync
        uses: easingthemes/ssh-deploy@main
        with:
# Dodaj w GitHub: Settings → Secrets → Actions
          SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
          REMOTE_HOST: ${{ secrets.SSH_HOST }}
          REMOTE_USER: ${{ secrets.SSH_USER }}
          SOURCE: ./
          TARGET: /home/uzytkownik/public_html/
          EXCLUDE: ".git/, node_modules/, .env"
Bezpieczeństwo kluczy SSH: Wygeneruj osobny klucz SSH tylko do deployu: ssh-keygen -t ed25519 -C "github-deploy" -f ~/.ssh/github_deploy. Dodaj klucz publiczny do ~/.ssh/authorized_keys na serwerze, a klucz prywatny jako GitHub Secret. Nigdy nie używaj klucza głównego do CI/CD.

cPanel Git Version Control — Smarthost i inne

Hostingi z cPanelem (np. Smarthost) mają wbudowany interfejs Git — bez konfiguracji przez SSH:

  1. Zaloguj się do cPanela → sekcja "Pliki" → "Git™ Version Control"
  2. Kliknij "Create" → wklej URL repozytorium GitHub/GitLab
  3. Wybierz katalog docelowy (zazwyczaj public_html/)
  4. Deploy: w panelu kliknij "Update from Remote" lub skonfiguruj automatyczny pull przez webhook

Najczęstsze pytania

Czy mogę deployować aplikację przez git push na hostingu współdzielonym?
Tak — jeśli hosting obsługuje SSH i Git CLI. Metoda: (1) Na serwerze utwórz bare repo (git init --bare ~/repos/moja-strona.git); (2) Dodaj post-receive hook kopiujący pliki do public_html/; (3) Lokalnie dodaj remote: git remote add hosting ssh://uzytkownik@serwer/~/repos/moja-strona.git; (4) Deploy: git push hosting main. LH.pl, CyberFolks i zenbox obsługują Git przez SSH. Sprawdź w panelu czy Git jest dostępny i jakiej wersji.
Jak używać GitHub Actions do deployu na hosting współdzielony?
GitHub Actions + rsync przez SSH to najpopularniejsza metoda. Workflow (.github/workflows/deploy.yml): (1) Trigger: push do branch main; (2) Steps: checkout, build (npm run build / composer install); (3) Deploy przez rsync: rsync -avz --delete ./dist/ uzytkownik@serwer:~/public_html/. Wymagania: GitHub Secret SSH_PRIVATE_KEY (klucz prywatny), SSH_HOST (adres serwera), SSH_USER. Alternatywa: action "easingthemes/ssh-deploy" lub "appleboy/ssh-action". Metoda działa z każdym hostingiem z SSH niezależnie od panelu.
Co to jest bare repo i post-receive hook?
Bare repo (git init --bare) to repozytorium bez working directory — przechowuje tylko historię commitów. Używane jako "remote" na serwerze. Post-receive hook to skrypt Shell uruchamiany automatycznie po każdym git push. Przykład hooka: #!/bin/bash; GIT_WORK_TREE=/home/user/public_html GIT_DIR=/home/user/repos/site.git git checkout -f main. Zrób go wykonywalnym: chmod +x hooks/post-receive. Hook może też uruchamiać composer install, npm run build lub restarty procesów PM2.
Czy git deploy działa dla WordPress na hostingu?
Tak, ale z ograniczeniami. W git repozytorium trzymaj własny kod (motyw, wtyczki, wp-content/themes/moj-motyw/) — NIE core WordPress ani wp-content/uploads/. W .gitignore: wp-config.php (zawiera hasła DB), wp-content/uploads/, /vendor/. Workflow: git push deployuje tylko zmiany w motywie/wtyczkach. WordPress core i media pozostają na serwerze nienaruszone. Przy WooCommerce dodaj wp-content/woocommerce-logs/ do .gitignore.

Szybkie przejście do ofert związanych z tym tematem

Wybraliśmy oferty i strony z kodami rabatowymi, które najczęściej pasują do tego scenariusza użycia.