Giới thiệu
Hợp tác trên GitHub không nên cảm thấy như một cuộc hỗn loạn. Khi mọi người tuân theo một quy trình đơn giản, đội nhóm sẽ hoạt động hiệu quả hơn và ít xảy ra sự cố hơn. Dưới đây là hướng dẫn thực tế, ngắn gọn mà bạn có thể sử dụng ngay hôm nay với các lệnh, giải thích và hành động cần thực hiện tại mỗi bước.
Ý tưởng nhanh
Làm việc trên nhánh chính? Không.
Làm việc trên nhánh tính năng/*? Có.
Thực hiện các commit nhỏ. Mở Pull Request (PR). Nhận đánh giá. Gộp khi CI thông qua. Ăn mừng.
1) Lấy kho lưu trữ (tham gia đội ngũ)
Sao chép kho lưu trữ chính thức:
bash
git clone https://github.com/<org>/<repo>.git
dcd repo
Hành động: đọc README.md và CONTRIBUTING.md trước khi làm bất cứ điều gì.
2) Luôn bắt đầu từ nhánh mới (kéo nhánh chính)
Trước khi bắt đầu một nhiệm vụ:
bash
git checkout main
git pull origin main
Hành động: không bao giờ bắt đầu một tính năng trên nhánh chính đã lỗi thời.
3) Tạo một nhánh (nhiệm vụ phụ của bạn)
Sử dụng tên rõ ràng:
bash
git checkout -b feature/auth-login
# hoặc
git checkout -b fix/login-typo
Quy ước đặt tên: feature/, fix/, chore/, hotfix/.
Hành động: một nhiệm vụ = một nhánh. Giữ cho các nhánh tập trung và nhỏ gọn.
4) Lập trình và commit (các điểm kiểm tra nhỏ, có ý nghĩa)
Thực hiện các commit thường xuyên, nguyên tử:
bash
git add .
git commit -m "feat(auth): thêm endpoint đăng nhập với JWT"
Mẫu thông báo commit (được khuyến nghị):
<type>(<scope>): <tóm tắt ngắn>
(có thể có mô tả dài hơn)
Loại: feat, fix, chore, docs, refactor, test.
Hành động: commit thường xuyên; thông điệp rõ ràng.
5) Giữ cho nhánh của bạn được cập nhật
Tùy chọn A: gộp nhánh chính vào nhánh của bạn:
bash
git fetch origin
git merge origin/main
# giải quyết xung đột nếu có, sau đó:
git add .
git commit
Tùy chọn B — rebase (nâng cao; không rebase các nhánh công cộng/chia sẻ):
bash
git fetch origin
git rebase origin/main
# giải quyết xung đột, sau đó:
git rebase --continue
git push --force-with-lease
Hành động: chọn một chiến lược mà đội của bạn đồng ý. Rebase viết lại lịch sử; gộp giữ lịch sử thẳng hàng với các commit gộp.
6) Đẩy nhánh của bạn lên GitHub
bash
git push origin feature/auth-login
Hành động: đẩy thường xuyên để người khác có thể xem tiến trình công việc.
7) Mở một Pull Request (PR)
Trên GitHub: So sánh & tạo PR
Một PR tốt bao gồm:
Tiêu đề rõ ràng: feat(auth): thêm endpoint đăng nhập
Điều bạn đã xây dựng (ngắn gọn)
Tại sao bạn xây dựng nó
Cách kiểm tra cục bộ (các lệnh)
Hình ảnh hoặc ghi âm nếu có thay đổi giao diện người dùng
Liên kết đến vấn đề/nhiệm vụ liên quan
Hành động: làm cho mô tả PR trở thành một tài liệu mini để người đánh giá không phải đoán.
8) Quy tắc và đánh giá PR
Gán 1–2 người đánh giá và yêu cầu đánh giá.
Giữ PR nhỏ — dễ đánh giá, nhanh gọn hơn để gộp.
Khi bạn nhận được phản hồi: trả lời, commit sửa đổi vào cùng một nhánh, đẩy cập nhật.
Nếu người đánh giá đưa ra gợi ý, ưu tiên các commit gợi ý hoặc giải thích lựa chọn của bạn nếu bạn không đồng ý.
Hành động: lịch sự và cụ thể trong các đánh giá mã. Sử dụng các bình luận như những khoảnh khắc dạy học.
9) Kiểm tra CI & điều kiện
Các quy tắc phổ biến trước khi gộp:
Tất cả các bài kiểm tra CI đều vượt qua (đơn vị/tích hợp/lint)
Không có nhật ký console mới hoặc các tài liệu gỡ lỗi
Đạt các tiêu chuẩn về độ phủ mã / chất lượng (nếu đã cấu hình)
Được phê duyệt bởi các đánh giá
Hành động: không gộp nếu CI thất bại — sửa chữa hoặc yêu cầu trợ giúp.
10) Chiến lược gộp (gộp gộp, gộp, hoặc rebase)
Các tùy chọn điển hình:
Gộp gộp — một commit sạch trong nhánh chính
Tạo một commit gộp — giữ lịch sử nhánh
Rebase và gộp — lịch sử tuyến tính
Hành động: làm theo chính sách của đội bạn. Gộp gộp là tuyệt vời cho nhánh chính gọn gàng.
11) Sau khi gộp — dọn dẹp
Trên GitHub: xóa nhánh (tùy chọn, được khuyến nghị). Tại chỗ:
bash
git checkout main
git pull origin main
git branch -d feature/auth-login
git fetch -p # cắt bỏ các nhánh từ xa đã xóa
Hành động: dọn dẹp các nhánh để tránh lộn xộn.
12) Giải quyết xung đột - các bước thực tiễn
Nếu gộp/rebase báo cáo có xung đột:
Mở các tệp, tìm các dấu hiệu xung đột <<<<<<< / ======= / >>>>>>>.
Thảo luận với đồng đội đã làm việc trên thay đổi khác (đừng đoán).
Sửa chữa, git add <file>.
Tiếp tục rebase hoặc tạo một commit và đẩy.
Lệnh cho xung đột rebase:
bash
# sau khi giải quyết
git add <file>
git rebase --continue
# nếu bạn cần hủy bỏ
git rebase --abort
Hành động: luôn nói chuyện qua các xung đột phức tạp — trò chuyện tiết kiệm thời gian.
13) Danh sách kiểm tra Pull Request (có thể sao chép)
Tiêu đề rõ ràng và có thể hành động
Mô tả: cái gì, tại sao, cách kiểm tra
Liên kết đến vấn đề/nhiệm vụ (nếu có)
Các bài kiểm tra đã thêm/cập nhật
Đã lint và định dạng
Không có nhật ký gỡ lỗi, bí mật hoặc tệp lớn
CI đã vượt qua
Ít nhất 1 phê duyệt
Hành động: thêm điều này vào mẫu PR của bạn.
14) Bảng cheat ngắn (các lệnh)
bash
git clone <repo>
git checkout -b feature/your-task
git add .
git commit -m "feat(scope): message"
git pull origin main # giữ cập nhật
git push origin feature/your-task
# sau khi hoàn tất:
# mở PR, sau khi gộp:
git checkout main
git pull origin main
git branch -d feature/your-task
git push origin --delete feature/your-task
Hành động cuối cùng:
Trước PR tiếp theo của bạn, cam kết với ba điều này:
Kéo nhánh chính mới nhất.
Tạo một nhánh tập trung và giữ nhỏ.
Thêm mô tả PR rõ ràng + các bước kiểm tra.
Gửi đi thông minh hơn, không chỉ nhanh hơn.
Chúc bạn may mắn!