Giao diện
Thực hành: Git Phase 1 Workflow Scenarios
🎯 Mục tiêu
🎯 Sau pack này, bạn sẽ luyện được reflex đúng cho các incident Git phổ biến ngoài đời thật:
- Chọn lệnh an toàn nhất khi lịch sử đã shared hoặc production đang chạy
- Phân biệt cleanup local với rollback shared history
- Xử lý workflow theo tư duy production-first, không theo kiểu “cứ force-push rồi tính sau”
- Dọn commit, branch, tag, và recovery path sao cho đồng đội vẫn theo kịp
Pack này khác gì bài thực hành Git thông thường?
Pack này không hỏi bạn “thuộc bao nhiêu lệnh Git”, mà hỏi:
- Khi đang căng thẳng, bạn chọn lệnh nào trước?
- Khi lịch sử đã được share, điểm dừng an toàn nằm ở đâu?
- Khi incident liên quan đến secret, release tag, hoặc production rollback, bạn ưu tiên điều gì trước?
Đây là đúng tinh thần của Phase 1 mới: Git là workflow system và recovery system, không chỉ là nơi lưu commit.
Ma trận tình huống trong pack
| Nhóm tình huống | Kỹ năng chính | Bài nền nên đọc lại |
|---|---|---|
| Secret lộ vào commit | Incident response, cleanup local vs pushed | /git/phase1/07-tags-releases-secrets |
Commit nhầm vào main | Branch rescue, local history surgery | /git/phase1/03-branching-basics |
Feature branch bị tụt sau main | Rebase private history an toàn | /git/phase1/04-merge-vs-rebase |
| Rollback production commit | Revert shared history | /git/phase1/05-reset-revert-cherry-pick |
| Lấy đúng 1 hotfix | Cherry-pick có kiểm soát | /git/phase1/05-reset-revert-cherry-pick |
Mất commit sau reset --hard | Reflog recovery | /git/phase1/06-reflog-bisect-recovery |
| Không biết commit nào gây regression | Bisect và debugging mindset | /git/phase1/06-reflog-bisect-recovery |
| Tag sai release commit | Release traceability | /git/phase1/07-tags-releases-secrets |
| Commit message tệ | Amend local vs không rewrite shared history vì cosmetic | /git/phase1/02-conventional-commits |
| Commit trộn nhiều mục tiêu | Atomic commits, partial staging | /git/phase1/01-staging-area-atomic-commits |
Luật chơi production-first
WARNING
Khi làm pack này, hãy tự hỏi trước mỗi câu:
- Lịch sử này đã shared chưa?
- Có đang đụng vào
main, production, release tag, hoặc secret không? - Mình đang cleanup local hay rollback hệ thống thật?
Nếu bạn bỏ qua 3 câu hỏi đó, bạn sẽ chọn đúng lệnh nhưng sai bối cảnh — và trong Git, đó vẫn là một lỗi nghiêm trọng.
Bộ scenario có trong pack
- Secret đã push lên remote và local cleanup trước khi push
- Commit nhầm vào
mainthay vì feature branch - Feature branch đang bị tụt sau
main - Revert một commit xấu trên production an toàn
- Cherry-pick đúng một hotfix sang release branch
- Recovery sau
reset --hard - Dùng
git bisectđể điều tra regression - Tag nhầm commit cho release
- Sửa Conventional Commit khi còn local
- Quyết định đúng khi commit message tệ đã nằm trên branch shared
- Tách mixed changes thành atomic commits dễ review
Cách làm bài
Gợi ý làm nhanh nhưng không ẩu
- Với scenario_choice, đọc như một incident ticket: điều gì là ưu tiên số 1?
- Với parsons_problem, đừng chỉ nhớ cú pháp. Hãy kiểm tra xem thứ tự hành động có phản ánh workflow thật hay không.
- Nếu bạn sai, hãy đọc kỹ explanation — phần giá trị nhất nằm ở vì sao không dùng lựa chọn còn lại.