The Git panel lets you deploy your project directly from a Git repository — clone it once, then pull updates whenever you push new code. No SSH or command line required.
Opening the Git Panel
Go to Software → Git in the sidebar and select a domain from the dropdown. The panel automatically checks whether a Git repository already exists in your project directory.
Project Directory
Git operates on the parent of your public_html folder — for example, /home/myuser/example.com/. This is the standard layout for PHP and Laravel projects where the web root sits inside the project.
Cloning a Repository
If no repository exists yet, the panel shows a Clone Repository form.
Repository URL — accepts HTTPS or SSH (git@) URLs:
https://github.com/user/myproject.gitgit@github.com:user/myproject.git
Branch — leave blank to use the repository's default branch, or enter a specific branch name (e.g. main, production).
Access Token — for private repositories using HTTPS, enter a personal access token (GitHub, GitLab, Gitea, etc.). The token is embedded in the stored remote URL so future pulls work automatically.
[!NOTE] For private repositories via SSH, set up your SSH key first under SSH Keys and use a
git@URL — no access token needed.
Click git clone and wait. Cloning may take a minute for large repositories.
Viewing Repository Status
Once cloned, the panel shows:
- Branch — the currently checked-out branch
- Clean / uncommitted changes — whether the working tree is dirty
- Remote URL — the origin the repo was cloned from
- Last commit — hash, message, author, and date
- Working tree — if there are uncommitted changes, the
git status --shortoutput is shown - Recent commits — last 10 commits with hash, message, author, and relative time
Pulling Updates
Click git pull to fetch and merge the latest changes from the remote branch. If your repository requires authentication and you need to refresh an expired token, check Private repo — provide token and enter a new one.
After a successful pull, the output from git pull appears at the bottom of the page.
Public vs. Private Repositories
| Type | URL format | Authentication |
|---|---|---|
| Public HTTPS | https://github.com/user/repo.git |
None required |
| Private HTTPS | https://github.com/user/repo.git |
Access token |
| Private SSH | git@github.com:user/repo.git |
SSH key (set up in SSH Keys) |
After Deploying
After a git pull, you may need to run follow-up steps:
- PHP / Laravel — run
composer installvia the Composer panel and clear caches - Node.js — run
npm installand restart your app via the Node.js panel
Common Issues
Clone fails with "destination path '.' already exists" — the working directory is not empty. Remove existing files via File Manager or SSH first.
Pull fails with "not a git repository" — the domain's working directory doesn't contain a .git folder. Clone the repository first.
Authentication failed — for HTTPS private repos, your token may have expired or lack the required scopes. Generate a new token with repo (GitHub) or read_repository (GitLab) scope.