Git là gì? Commit và branch giải thích cho fresher Việt Nam【2026】

(Cập nhật: 19 tháng 7, 2026 ) Git commit branch fresher version control học Git
Kết luận

Git không phải danh sách lệnh cần thuộc lòng ngày đầu. Với fresher Việt Nam: hiểu commit = snapshot có ý nghĩa, branch = đường làm việc song song, remote = bản sao trên GitHub/GitLab. Khi hình dung được ba ý này, vòng status → add → commit → push mới có chỗ đứng. Đừng commit thẳng lên main của team; tạo branch cho từng task.

Sinh viên hoặc intern tuần đầu nghe lead nói “push lên Git rồi tạo PR” — nhiều người mở terminal, gõ bừa, sợ làm hỏng repo. Nguyên nhân thường không phải thiếu lệnh, mà chưa có hình ảnh trong đầu Git đang làm gì.

Bài này giải thích Git là gì theo góc khái niệm commit / branch cho fresher VN. Không phải cheat sheet lệnh hàng ngày (cái đó học sau khi đã hiểu mô hình). Mục tiêu: đọc xong bạn vẽ được sơ đồ local → commit → branch → remote.

Ai nên đọc bài này

  • Sinh viên năm 2–4 lần đầu clone repo từ GitHub
  • Intern / fresher join team outsource hoặc startup Việt
  • Người từng gửi code bằng zip / Zalo / Google Drive và đang chuyển sang Git

Git là gì? (một câu + một hình dung)

Git là hệ thống quản lý phiên bản phân tán (distributed version control): mỗi máy clone đều có lịch sử đầy đủ, không phụ thuộc một server trung tâm để xem log.

Hình dung đơn giản hơn:

Cách cũVới Git
File baocao_v1.docx, baocao_v2_final.docx, baocao_FINAL_that.docxMột thư mục project + chuỗi commit có message
Gửi zip cho bạn cùng nhómPush lên remote, mọi người pull
Sửa nhầm → khóc vì không nhớ bản trướcQuay lại commit cũ hoặc so diff

Git không đồng nghĩa GitHub. Git chạy trên máy bạn; GitHub chỉ là một chỗ phổ biến để host remote.


Ba vùng bạn phải nhớ trước mọi lệnh

Hầu hết nhầm của fresher đến từ việc không phân biệt:

[Working tree]  --git add-->  [Staging / Index]  --git commit-->  [Repository]
   file đang sửa              chọn cái sẽ ghi nhận           lịch sử snapshot
  1. Working tree — bạn mở VS Code, sửa LoginForm.tsx. File đã đổi trên đĩa, nhưng Git chưa “ghi nhận” gì.
  2. Staginggit add đưa thay đổi vào danh sách sẽ nằm trong commit kế tiếp. Có thể add từng file, không bắt buộc add hết.
  3. Commitgit commit đóng gói staging thành một snapshot gắn hash + message + tác giả + thời gian.

Ví dụ thực tế trong đồ án nhóm:

  • Bạn sửa 3 file: UI, API mock, và file .env chứa key test.
  • Chỉ git add UI + mock → commit "feat: form login UI".
  • .env không add → không lọt lên GitHub. Đó là lý do staging tồn tại.
Ba vùng Git
Vùng Câu hỏi kiểm tra Lệnh liên quan (sau này)
Working tree File trên đĩa đã đổi chưa? git status, git diff
Staging Đã chọn đưa vào commit chưa? git add, git restore --staged
Repository Snapshot đã ghi vào lịch sử chưa? git commit, git log

Commit: không phải “lưu file”, mà là “đóng khung khoảnh khắc”

Commit chứa gì?

Mỗi commit mang:

  • Snapshot nội dung project (thực tế Git lưu thông minh theo delta, nhưng bạn hãy nghĩ “ảnh toàn bộ”)
  • Message — câu trả lời “tại sao / làm gì”
  • Parent — commit đứng trước (tạo thành chuỗi lịch sử)
  • Hash (SHA) — ID duy nhất, ví dụ a3f1c02

Message tốt cho fresher VN

Team outsource khách Nhật/US thường dùng tiếng Anh ngắn:

feat: validate empty password on login
fix: correct timezone display on dashboard

Repo đồ án nội bộ có thể tiếng Việt, nhưng một PR một ngôn ngữ, tránh "update", "fix bug", "sửa tí".

Sai tư duy phổ biến

Tư duy saiHệ quảTư duy đúng
Commit càng ít càng tốtDiff khổng lồ, review chếtCommit nhỏ theo ý nghĩa
Commit = backup mỗi 5 phútLịch sử rácCommit khi hoàn thành một ý
Đã commit = đã lên GitHubTeam không thấy gìCần push mới lên remote

Branch: đường ray song song trên cùng repo

Hình dung main (hoặc master) là đường ray chính — bản team đồng ý là ổn định. Mỗi task của bạn là nhánh phụ:

main:    A --- B --- C --- E
                  \
feature:           D --- D2   ← bạn đang làm ở đây
  • Tạo branch = đánh dấu “tôi thử nghiệm từ commit C”.
  • Sửa trên branch không đụng file mà người khác đang xem trên main (cho đến khi merge).
  • Merge / Pull Request = đề nghị gộp D2 vào main sau khi review.

Vì sao fresher bắt buộc dùng branch?

  1. An toàn tâm lý — thử sai trên branch riêng; main vẫn sạch.
  2. Review — lead đọc PR theo nhánh, không đọc zip.
  3. Song song — bạn A làm login, bạn B làm admin: hai branch, ít đụng nhau hơn sửa chung một thư mục Drive.

Quy tắc ngày đầu: không commit trực tiếp lên main của repo team. Tạo feature/... hoặc fix/..., làm việc ở đó.


Local vs remote (chỗ hay nhầm nhất)

Máy bạn (local)          GitHub/GitLab (remote)
─────────────────        ───────────────────────
working tree
commits của bạn   ----push---->   origin/main, origin/feature/...
                  <---pull----
  • clone — tải remote về máy lần đầu (có đủ lịch sử).
  • push — gửi commit local lên remote.
  • pull / fetch — lấy commit người khác về.

Bạn có thể commit rất nhiều lần offline (trên xe bus, quán cafe mất Wi-Fi). Chỉ khi có mạng mới push. Đây là điểm mạnh của Git so với chỉ lưu trên Drive.


Case study ngắn: tuần đầu intern

Bối cảnh: Intern FE join team agency Hà Nội, repo khách trên GitHub.

Ngày 1 (sai): Clone xong, sửa thẳng trên main, git add ., commit "update", push — bị lead revert vì lọt node_modules và đụng code người khác.

Ngày 2 (đúng mental model):

1

pull main mới nhất

2

tạo branch fix/header-mobile

3

sửa → status → add đúng file → commit message rõ

4

push branch → mở Pull Request

Lead review 10 phút, merge. Intern hiểu: branch bảo vệ main; commit kể chuyện; push chia sẻ.


Checklist tự hỏi trước khi gõ lệnh

  • Tôi đang ở branch nào? (git status dòng đầu)
  • Thay đổi đang ở working tree hay đã stage?
  • Commit này một ý hay đang nhồi UI + hotfix + xóa file tạm?
  • Sau commit, team đã thấy chưa? (chưa thì cần push)
  • File secret (.env, key) đã nằm trong .gitignore chưa?

Khi checklist này thành phản xạ, học lệnh chi tiết sẽ nhanh hơn rất nhiều.


Câu hỏi thường gặp

Git khác GitHub thế nào?
Git = công cụ trên máy. GitHub = remote + UI (PR, Issues). Còn GitLab, Bitbucket, Azure DevOps — cùng vai trò remote khác nhau.

Có cần thuộc hết lệnh ngày đầu không?
Không. Nắm commit / branch / remote trước. Vòng lệnh hàng ngày học ở bài cheat sheet riêng.

Mất file vì Git?
Hiếm khi “Git xóa mất” nếu bạn chưa reset --hard / clean. Thường fresher sợ quá nên không commit — ngược lại, commit sớm (trên branch riêng) là lưới an toàn.


Bước tiếp theo

  1. Mở repo đồ án hoặc repo mẫu, chạy git log --oneline — nhìn chuỗi commit thật.
  2. Tạo một branch thử, sửa 1 file README, commit với message rõ.
  3. Khi đã quen mô hình, học cheat sheet lệnh hàng ngày: status, add, commit, branch, PR.

Git là kỹ năng nền của hầu hết việc junior / freelance / outsource ở Việt Nam. Đầu tư 15 phút vào khái niệm hôm nay rẻ hơn cả tuần sợ terminal.