infall-gitflow
v0.2.1
Published
CLI tool hỗ trợ gitflow chuẩn cho team nhiều service - Hỗ trợ GitLab và GitHub
Readme
infall-gitflow
CLI tool hỗ trợ gitflow chuẩn cho team nhiều service - Hỗ trợ GitLab và GitHub.
Cài đặt
Cài đặt toàn cục:
npm install -g infall-gitflowHoặc cài trong project:
npm install --save-dev infall-gitflowCấu hình
Tạo file .env với nội dung:
Cho GitLab:
GIT_TOKEN=your_gitlab_token
GIT_REPO=https://gitlab.com/api/v4/projects/your_project_idCho GitHub:
GITHUB_TOKEN=your_github_tokenLưu ý: Tool sẽ tự động phát hiện platform (GitLab/GitHub) dựa trên URL của remote repository. Nếu không thể phát hiện tự động, tool sẽ dựa vào các biến môi trường đã cấu hình.
Sử dụng
1. Tạo nhánh mới theo gitflow
- Tạo nhánh feature:
gf feature ten-chuc-nang # => tạo nhánh feature/ten-chuc-nang từ dev, tự checkout và push - Tạo nhánh bugfix:
gf bugfix ten-bug # => tạo nhánh bugfix/ten-bug từ dev, tự checkout và push - Tạo nhánh release:
gf release ten-release # => tạo nhánh release/ten-release từ dev, tự checkout và push - Tạo nhánh hotfix (từ master hoặc nhánh master chỉ định):
gf hotfix ten-hotfix # => tạo nhánh hotfix/ten-hotfix từ master gf hotfix ten-hotfix --from core-master # => tạo nhánh hotfix/ten-hotfix từ core-master
2. Cấu hình Rebase (Khuyến nghị - Chạy một lần)
Để tránh merge commit pollution và giữ git graph sạch:
gf setup-rebase
# => Cấu hình git pull.rebase = true (global)
# => Từ giờ git pull sẽ tự động dùng rebaseLưu ý quan trọng: Tool đã tự động dùng rebase trong các lệnh của nó, nhưng lệnh này giúp cấu hình cho tất cả git pull commands khác của bạn.
3. Kiểm tra cấu hình
gf verify
# => Hiển thị version, rebase config, và trạng thái hiện tại3. Kết thúc nhánh (merge hoặc tạo MR/PR)
Tự động nhận diện nhánh hiện tại nếu không truyền branch:
- Nếu đang ở nhánh
hotfix/*→ merge request/pull request vàomaster - Nếu đang ở nhánh
*-masterhoặcmaster→ merge request/pull request vàodev - Nếu đang ở nhánh
*-uat→ merge trực tiếp vàodev - Các trường hợp khác → merge request/pull request vào
dev
- Nếu đang ở nhánh
Ví dụ:
# Đang ở nhánh core-master gf finish # => tạo merge request/pull request từ core-master vào dev # Đang ở nhánh hotfix/abc gf finish # => tạo merge request/pull request từ hotfix/abc vào master # Đang ở nhánh core-uat gf finish # => merge trực tiếp core-uat vào dev # Truyền branch thủ công vẫn được: gf finish core-master -m "Release core v1.2.3" gf finish core-uat -m "Deploy lên UAT"
Tính năng mới
v0.2.1 - Clean Git History
- Rebase thay vì Merge khi pull: Tự động dùng
git pull --rebaseđể tránh merge commit pollution - Git graph sạch hơn: Không còn spam "Merge branch 'dev' of..." trong lịch sử
- Lệnh setup:
gf setup-rebaseđể cấu hình global rebase cho toàn bộ git commands
v0.2.0 - GitHub Support
- Tự động phát hiện platform (GitLab/GitHub) từ remote URL
- Tạo Pull Request thay vì Merge Request cho GitHub repositories
- Sử dụng GitHub API để lấy thông tin collaborators và assignees
- Hỗ trợ reviewer selection cho GitHub Pull Requests
- Tự động parse repository information từ remote URL
- Fallback detection dựa trên environment variables
- Cải thiện error handling và user feedback
Lưu ý
- Các lệnh đều có mô tả tiếng Việt, dễ dùng cho user không chuyên.
- Nếu không truyền message (-m), tool sẽ tự sinh message mặc định.
- Cần cấu hình đúng token trong .env để sử dụng các lệnh finish.
- Tool hỗ trợ cả GitLab và GitHub, tự động phát hiện platform.
- Tool tự động dùng rebase khi pull để giữ git graph sạch, không còn merge commit spam.
TODO
- Thêm các lệnh gitflow khác nếu cần.
- Hỗ trợ các platform khác (Bitbucket, Azure DevOps, etc.)
