Git là gì? GitHub là gì? Hướng dẫn cho người mới

Git và GitHub khác nhau thế nào, các lệnh Git cơ bản, quy trình branch – commit – pull request.

03 tháng 11, 2026 7 phút đọc

Git là gì? Git là hệ thống quản lý phiên bản phân tán, giúp lưu lại lịch sử thay đổi của mã nguồn, quay lại phiên bản cũ và làm việc nhóm mà không ghi đè code của nhau. GitHub là gì? GitHub là dịch vụ lưu trữ kho Git trực tuyến, bổ sung các tính năng cộng tác như pull request, review code, quản lý issue và CI/CD. Bài viết giải thích sự khác nhau giữa Git, GitHub, GitLab và hướng dẫn các lệnh cơ bản để bạn dùng được ngay.

Vì sao lập trình viên nào cũng cần Git?

Thử tưởng tượng bạn đang làm một dự án và có các thư mục du-an-final, du-an-final-2, du-an-final-that-su… Khi làm việc nhóm, mọi người gửi file qua chat và không ai chắc bản nào mới nhất. Git giải quyết những vấn đề đó:

  • Lưu lịch sử: mỗi lần lưu (commit) đều ghi lại ai thay đổi gì, khi nào và vì sao.
  • Quay lại an toàn: có thể khôi phục về bất kỳ thời điểm nào trước đó.
  • Làm việc song song: mỗi người làm trên một nhánh (branch) riêng rồi gộp lại.
  • Phân tán: mỗi máy có bản sao đầy đủ lịch sử, không phụ thuộc hoàn toàn vào một máy chủ.

Hầu hết công ty phần mềm dùng Git, nên đây là kỹ năng gần như bắt buộc khi đi làm.

Git, GitHub và GitLab khác nhau thế nào?

GitGitHubGitLab
Bản chấtPhần mềm quản lý phiên bản, chạy trên máy bạnDịch vụ lưu trữ kho Git trên webDịch vụ lưu trữ kho Git, có thể tự cài trên server riêng
Cần internetKhôngCóCó (hoặc mạng nội bộ nếu tự host)
Tính năng nổi bậtcommit, branch, mergePull request, Actions, cộng đồng mã nguồn mở lớnMerge request, CI/CD tích hợp sâu, tự host

Nói ngắn gọn: Git là công cụ, còn GitHub và GitLab là nơi lưu trữ và cộng tác dựa trên Git.

Cài đặt và cấu hình Git

  1. Tải Git tại git-scm.com (Windows) hoặc cài qua trình quản lý gói (macOS: Homebrew, Linux: apt/dnf).
  2. Kiểm tra: git --version.
  3. Cấu hình tên và email (sẽ xuất hiện trong mỗi commit):
git config --global user.name "Tên Của Bạn"
git config --global user.email "email@example.com"
git config --global init.defaultBranch main

Ba vùng làm việc của Git

Hiểu ba vùng này giúp bạn không bị rối khi dùng lệnh:

  • Working directory: thư mục bạn đang sửa file.
  • Staging area: nơi tập hợp những thay đổi bạn muốn đưa vào commit tiếp theo (git add).
  • Repository: lịch sử commit đã lưu (git commit).

Các lệnh Git cơ bản

git init                      # tạo kho Git mới
git status                    # xem trạng thái file
git add index.html            # đưa file vào staging
git add .                     # đưa tất cả thay đổi
git commit -m "Thêm trang chủ" # lưu commit
git log --oneline             # xem lịch sử
git diff                      # xem thay đổi chưa staging

Viết commit message ngắn, rõ ràng, mô tả đã làm gì: “Sửa lỗi đăng nhập khi mật khẩu trống” tốt hơn nhiều so với “fix”.

File .gitignore

Tạo file .gitignore để Git bỏ qua những thứ không nên đưa lên kho như node_modules/, .env, file build. Đặc biệt không bao giờ commit mật khẩu hay API key.

Làm việc với branch

Branch cho phép phát triển tính năng mới mà không ảnh hưởng nhánh chính.

git switch -c tinh-nang-dang-nhap   # tạo và chuyển sang nhánh mới
# ... sửa code, commit ...
git switch main
git merge tinh-nang-dang-nhap

Xử lý conflict

Conflict xảy ra khi hai nhánh cùng sửa một đoạn code. Git sẽ đánh dấu đoạn xung đột bằng các ký hiệu <<<<<<<, =======, >>>>>>>. Bạn chỉ cần chọn giữ đoạn nào (hoặc kết hợp), xoá ký hiệu, sau đó git add và git commit. Conflict là chuyện bình thường, không phải lỗi nghiêm trọng.

Merge và rebase

git merge giữ nguyên lịch sử của cả hai nhánh và tạo commit gộp. git rebase “đặt lại” các commit của nhánh bạn lên trên nhánh mới nhất, cho lịch sử thẳng hàng hơn. Nguyên tắc an toàn: không rebase những nhánh đã chia sẻ với người khác.

Đưa code lên GitHub

  1. Tạo tài khoản GitHub và tạo repository mới.
  2. Kết nối kho trên máy với GitHub và đẩy code lên:
git remote add origin https://github.com/ten-ban/du-an.git
git push -u origin main

Các lệnh đồng bộ thường dùng: git pull (lấy thay đổi mới về), git fetch (chỉ tải về, chưa gộp), git clone (sao chép kho có sẵn về máy).

Quy trình pull request khi làm việc nhóm

  1. Cập nhật nhánh chính: git switch main && git pull.
  2. Tạo nhánh mới cho tính năng hoặc sửa lỗi.
  3. Commit nhỏ, thường xuyên, message rõ ràng.
  4. Push nhánh lên GitHub và tạo pull request (GitLab gọi là merge request).
  5. Đồng đội review, góp ý; bạn sửa và push tiếp.
  6. Khi được duyệt và CI chạy qua, gộp vào nhánh chính.

Quy trình này giúp code luôn được kiểm tra trước khi vào sản phẩm và là kỹ năng nhà tuyển dụng thường hỏi.

Lỗi thường gặp và cách xử lý

Tình huốngCách xử lý
Commit nhầm messagegit commit --amend (khi chưa push)
Muốn bỏ thay đổi một file chưa commitgit restore <file>
Đưa nhầm file vào staginggit restore --staged <file>
Muốn hoàn tác một commit đã pushgit revert <mã commit> (tạo commit đảo ngược, an toàn)
Cần tạm cất thay đổi để chuyển nhánhgit stash, sau đó git stash pop

Hãy cẩn thận với git reset --hard và git push --force vì chúng có thể làm mất code.

GitHub còn dùng để làm gì?

  • Portfolio: nhà tuyển dụng thường xem GitHub để đánh giá dự án thực tế của bạn.
  • GitHub Actions: tự động chạy test, build và deploy mỗi khi push code, một phần quan trọng trong lộ trình DevOps.
  • Đóng góp mã nguồn mở: sửa lỗi tài liệu hoặc code cho dự án bạn dùng là cách học rất tốt.
  • GitHub Pages: đăng website tĩnh miễn phí, phù hợp cho dự án HTML/CSS đầu tiên trong lộ trình học lập trình web.

Quy ước đặt tên nhánh và commit

Khi làm việc nhóm, quy ước giúp lịch sử Git dễ đọc và tự động hoá được nhiều việc. Một số quy ước phổ biến:

  • Tên nhánh theo loại công việc: feature/dang-nhap-google, fix/loi-thanh-toan, chore/cap-nhat-thu-vien.
  • Conventional Commits: message bắt đầu bằng loại thay đổi như feat:, fix:, docs:, refactor:, test:. Ví dụ: feat: thêm bộ lọc khoá học theo danh mục. Quy ước này giúp tự sinh changelog và đánh số phiên bản.
  • Commit nhỏ, có ý nghĩa: mỗi commit nên làm một việc. Commit “sửa tất cả” rất khó review và khó hoàn tác.

Các mô hình làm việc với nhánh

Mỗi nhóm có thể chọn một chiến lược phân nhánh phù hợp:

Mô hìnhCách làmPhù hợp
GitHub FlowNhánh main luôn deploy được; mỗi tính năng một nhánh, merge qua pull requestNhóm nhỏ, deploy liên tục
Git FlowCó thêm nhánh develop, release, hotfixSản phẩm phát hành theo phiên bản
Trunk-basedMọi người merge thường xuyên vào nhánh chính, dùng feature flag để ẩn tính năng chưa xongNhóm có CI/CD và test tự động tốt

Người mới nên bắt đầu với GitHub Flow vì đơn giản và đủ dùng cho đa số dự án.

Bảo mật khi dùng Git và GitHub

  • Dùng khoá SSH hoặc token có thời hạn thay vì mật khẩu khi kết nối với GitHub.
  • Bật xác thực hai lớp (2FA) cho tài khoản GitHub.
  • Nếu lỡ commit mật khẩu hay API key, hãy thu hồi và tạo khoá mới ngay; xoá khỏi lịch sử Git là chưa đủ vì người khác có thể đã sao chép.
  • Bật bảo vệ nhánh chính (branch protection): bắt buộc pull request và review trước khi merge.

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

Git có khó học không?

Các lệnh cơ bản (add, commit, push, pull, branch) có thể học trong vài buổi. Phần khó hơn như rebase, xử lý conflict phức tạp sẽ quen dần khi làm dự án thật.

Nên dùng Git bằng dòng lệnh hay giao diện?

Nên học dòng lệnh trước để hiểu bản chất, sau đó có thể dùng giao diện trong VS Code hoặc các ứng dụng Git GUI cho tiện.

GitHub có miễn phí không?

GitHub có gói miễn phí cho phép tạo kho công khai và riêng tư; các gói trả phí bổ sung tính năng cho nhóm và doanh nghiệp. Chi tiết xem trên trang giá chính thức.

Không phải lập trình viên có dùng Git được không?

Được. Git quản lý tốt mọi file văn bản như tài liệu Markdown, cấu hình, nội dung website.

Kết luận

Git giúp bạn quản lý mã nguồn an toàn, còn GitHub và GitLab giúp cộng tác và chia sẻ. Hãy dùng Git ngay từ dự án đầu tiên, kể cả khi làm một mình. Để học sâu về branch, rebase, xử lý conflict và quy trình làm việc nhóm, tham khảo khoá học Git, GitHub, GitLab của MelyDemy.

#Git#GitHub#Hướng#dẫn#cho

Thấy hữu ích? Chia sẻ ngay!