Git Version Control
HƯỚNG DẪN GIT VERSION CONTROL TRÊN VPANEL
Git Version Control cho phép bạn host repository trực tiếp trên tài khoản hosting, xem lịch sử commit, quản lý remote và deploy code sang docroot của website chỉ bằng một nút bấm. Mỗi repository là một working tree Git thật, thuộc Unix user của domain — nên các thao tác chạy dưới phân quyền tenant nghiêm ngặt.
1. Truy cập Git Version Control
Đăng nhập User Panel ở cổng :2083. Trên sidebar, mục Files, nhấn Git Version Control.

Tổng quan giao diện
| Thành phần | Mô tả |
|---|---|
| + Create Repository | Nút góc phải để tạo repo mới. |
| Search | Lọc theo tên hoặc đường dẫn repo. |
| Bảng Repositories | Liệt kê tất cả repo trong tài khoản. |
Các cột trong bảng
| Cột | Ý nghĩa |
|---|---|
| Name | Tên friendly. |
| Path | Đường dẫn tuyệt đối đến working tree. |
| Branch | Branch đang checkout. |
| Last Commit | Author + thời gian tương đối của commit mới nhất. |
| Actions | Nút Manage để mở panel chi tiết. |
2. Tạo Repository
Nhấn + Create Repository để mở form.

Các trường trong form
| Trường | Mô tả |
|---|---|
| Clone URL | Tùy chọn — URL Git để clone (HTTPS hoặc SSH). Bỏ trống để init repo rỗng. |
| Repository Path | Đường dẫn đích trên server (ví dụ public_html/myapp hoặc repos/blog). |
| Repository Name | Tên friendly hiển thị trong danh sách. |
Nhấn Create để bắt đầu. Nếu có Clone URL, vPanel chạy git clone dưới Unix user của bạn ở background — repo lớn sẽ chạy dưới dạng async task, bạn có thể rời trang an toàn.
Mẹo: Với repo private, dùng URL HTTPS kèm personal access token, hoặc thêm SSH key qua Preferences → SSH Access trước.
3. Quản lý Repository
Nhấn Manage ở cột Actions để mở panel chi tiết.

Các mục chi tiết
| Mục | Mô tả |
|---|---|
| Basic Info | Tên, đường dẫn, branch hiện tại, HEAD commit. |
| Branches | Toàn bộ branch local + remote. Nhấn tên branch để checkout. |
| Remotes | Danh sách remote (thường là origin). Thêm / xóa / đổi URL. |
| Working Tree Status | Cho biết working tree sạch hay có thay đổi chưa commit. |
Thao tác thường dùng
| Nút | Tác dụng |
|---|---|
| Pull | git pull — fetch + merge từ origin. |
| Fetch | git fetch — cập nhật remote refs, không merge. |
| Checkout Branch | Chuyển sang branch khác. |
| Delete Repository | Xóa hoàn toàn thư mục repo. |
4. Lịch sử commit
Cuộn xuống mục Commit History (hoặc mở tab History) để xem commit gần đây.

| Cột | Ý nghĩa |
|---|---|
| SHA | Hash rút gọn — nhấn để mở rộng. |
| Author | Tên + email trong commit. |
| Message | Dòng chủ đề commit. |
| Date | Thời gian commit (giờ local). |
Nhấn vào dòng commit để xem message đầy đủ và danh sách tệp thay đổi. Dùng Copy SHA để lấy hash tham chiếu trong issue hoặc script.
5. Cài đặt Deploy
Tab Deploy Settings cấu hình cách repo publish thay đổi ra website production.

| Cài đặt | Mô tả |
|---|---|
| Auto-Deploy on Pull | Nếu bật, pull từ origin sẽ tự động chạy deploy. |
| Deploy Path | Thư mục đích nhận tệp (thường là docroot). |
| Deploy Command | Lệnh shell tùy chọn chạy sau khi sync tệp (ví dụ composer install --no-dev, npm run build, php artisan migrate --force). |
| Post-Deploy Command | Lệnh tùy chọn chạy sau khi deploy thành công (ví dụ warm cache). |
Deploy thủ công
Nhấn Deploy Now để chạy pipeline ngay. vPanel:
- Chạy
git pulltrong working tree. - Sao chép các tệp đã tracked vào Deploy Path.
- Thực thi Deploy Command nếu có cấu hình.
- Báo cáo kết quả với log đầy đủ.
Với deploy dài (Composer install, npm build), thao tác chạy dưới dạng async task — kiểm tra trạng thái ở khay tasks.
6. Khắc phục sự cố
Clone thất bại — "Authentication failed"
- Nguyên nhân: Repo private mà thiếu credential, hoặc token hết hạn.
- Giải pháp: Dùng URL HTTPS kèm token, hoặc thêm SSH key qua Preferences.
Pull thất bại — "Your local changes would be overwritten"
- Nguyên nhân: Thay đổi local chưa commit xung đột với commit mới.
- Giải pháp: Commit/stash thay đổi, hoặc reset working tree nếu thay đổi không cần giữ.
Deploy Command lỗi
- Nguyên nhân: Lệnh exit code khác 0 (thiếu dependency, sai path).
- Giải pháp: Mở log task ở khay tasks để xem lỗi cụ thể. Thử lệnh trước qua Terminal.
"Permission denied" khi ghi vào Deploy Path
- Nguyên nhân: Deploy Path thuộc user khác (ví dụ bạn từng chuyển tệp bằng root qua SSH).
- Giải pháp: Sửa ownership: chown Deploy Path về Unix user của tài khoản.
Chúc bạn quản trị Server an toàn và hiệu quả!
