Ngày đăng: 7 Tháng 9 2026 | Tác giả: Blog Kỹ Thuật
Giới thiệu
Trong môi trường phát triển phần mềm hiện đại, quản lý phiên bản không chỉ là việc đặt tên cho các bản phát hành mà còn là một chiến lược giúp đội ngũ phát triển duy trì tính nhất quán, giảm rủi ro và tăng tốc độ triển khai. Git Tag và Release là hai công cụ mạnh mẽ giúp bạn đạt được mục tiêu này. Bài viết sẽ đưa bạn đi qua từng bước thực hành, từ khái niệm cơ bản đến các mẹo nâng cao, sao cho quản lý phiên bản phần mềm trở nên chuẩn xác và hiệu quả.
Git Tag là gì? Khi nào nên dùng?
Trong Git, Tag là một dấu chỉ (pointer) không thay đổi, thường được dùng để đánh dấu một commit quan trọng – ví dụ như một phiên bản release chính. Có hai loại tag:
- Lightweight Tag: tương tự như một nhánh tạm thời, không có metadata.
- Annotated Tag: chứa thông tin tác giả, ngày tạo và thông điệp – phù hợp cho release chính thức.
**Khi nào nên tạo tag?**
- Hoàn thành một tính năng quan trọng.
- Đánh dấu một bản phát hành (v1.0.0, v2.1.3, …).
- Trước khi thực hiện hotfix trên nhánh chính.
Bước 1: Tạo Git Tag chuẩn SEO
Để tối ưu SEO nội bộ cho tài liệu và cải thiện khả năng tìm kiếm, hãy tuân thủ quy tắc đặt tên nhất quán:
git tag -a v1.2.0 -m "Release version 1.2.0 - Thêm tính năng X"
Giải thích:
-a: tạo Annotated Tag.-m: thông điệp mô tả chi tiết, tốt cho release notes.- Đặt tên theo Semantic Versioning (MAJOR.MINOR.PATCH) để dễ dàng theo dõi.
Bước 2: Đẩy Tag lên Remote & Tạo Release trên GitHub/GitLab
Sau khi tạo tag, đừng quên đẩy nó lên remote repository:
git push origin v1.2.0
Tiếp theo, truy cập vào giao diện GitHub hoặc GitLab để tạo Release:
- Chọn Tags → Create new release.
- Điền tiêu đề, mô tả chi tiết, và đính kèm các asset (binary, changelog, …).
- Publish – giờ đây người dùng có thể tải về phiên bản release một cách dễ dàng.
Bước 3: Tự động hoá quy trình Release với CI/CD
Để giảm thiểu lỗi con người, hãy tích hợp Git Tag và Release vào pipeline CI/CD. Dưới đây là mẫu .github/workflows/release.yml cho GitHub Actions:
name: Create Release
on:
push:
tags:
- 'v*.*.*'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build project
run: |
# Thực hiện build, test...
echo "Build thành công"
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.ref_name }}
name: Release ${{ github.ref_name }}
body: |
## Thay đổi chính
- Tính năng X
- Sửa lỗi Y
draft: false
prerelease: false
Pipeline này sẽ tự động tạo release mỗi khi một Git Tag phù hợp được đẩy lên remote.
Mẹo nâng cao cho Quản Lý Phiên Bản Phần Mềm
- Chiến lược Branching: Kết hợp
main/mastercho production,developcho tính năng đang phát triển, vàrelease/*cho chuẩn bị triển khai. - Changelog tự động: Sử dụng công cụ standard-version để tạo file
CHANGELOG.mddựa trên commit messages. - Kiểm tra tính nhất quán version: Áp dụng script kiểm tra
package.json,pom.xml, … để đảm bảo mọi file version đều trùng khớp. - Tagging cho môi trường: Sử dụng tiền tố như
v1.2.0-prod,v1.2.0-betađể phân biệt môi trường triển khai.
FAQ – Những câu hỏi thường gặp
1. Tôi có thể xóa một tag đã đẩy lên remote không?
Có, dùng lệnh git push --delete origin v1.0.0 và sau đó xóa cục bộ bằng git tag -d v1.0.0. Tuy nhiên, hãy thông báo cho team để tránh việc người khác vẫn tham chiếu vào tag đó.
2. Khi nào nên dùng lightweight tag?
Lightweight tag thích hợp cho các checkpoint nội bộ, không cần thông tin tác giả hoặc mô tả chi tiết. Đối với release chính thức, luôn sử dụng annotated tag.
3. Có cần tạo release trên GitHub nếu đã có tag?
Có, vì Release trên GitHub cung cấp giao diện người dùng, hỗ trợ tải file nhị phân, và tích hợp với các công cụ CI/CD để tự động tạo changelog.