Skip to content

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ốngKỹ năng chínhBài nền nên đọc lại
Secret lộ vào commitIncident response, cleanup local vs pushed/git/phase1/07-tags-releases-secrets
Commit nhầm vào mainBranch rescue, local history surgery/git/phase1/03-branching-basics
Feature branch bị tụt sau mainRebase private history an toàn/git/phase1/04-merge-vs-rebase
Rollback production commitRevert shared history/git/phase1/05-reset-revert-cherry-pick
Lấy đúng 1 hotfixCherry-pick có kiểm soát/git/phase1/05-reset-revert-cherry-pick
Mất commit sau reset --hardReflog recovery/git/phase1/06-reflog-bisect-recovery
Không biết commit nào gây regressionBisect và debugging mindset/git/phase1/06-reflog-bisect-recovery
Tag sai release commitRelease 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êuAtomic 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:

  1. Lịch sử này đã shared chưa?
  2. Có đang đụng vào main, production, release tag, hoặc secret không?
  3. 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 main thay 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.

Luyện tập tương tác