Git & GitHub
Cheat Sheet
Hướng dẫn từ số 0 cho người mới: cài đặt Git, cấu hình, commit, branch, pull request, đồng bộ với team và xử lý conflict. Kèm GitHub CLI (gh).
Git vs GitHub — khác nhau thế nào?
Git là công cụ quản lý phiên bản chạy trên máy bạn — theo dõi mọi thay đổi của code. GitHub là dịch vụ lưu trữ repo Git trên cloud để backup, chia sẻ và làm việc nhóm.
Bản đồ Git — code của bạn đi qua 4 vùng
Mỗi lệnh Git chỉ là chuyển code từ vùng này sang vùng khác. Nhìn bản đồ dưới đây một lần là hiểu hầu hết lệnh thường dùng.
add, chờ commit.git trên máyChiều đi lên (add → commit → push) Chiều hoàn tác / kéo về (restore, pull…)
Vòng đời một file — git status báo gì?
Một file luôn ở một trong các trạng thái sau. git status chính là đang cho bạn biết file đang ở đâu.
Cài đặt & cấu hình lần đầu
Cài Git
brew install gitmacOS. Windows & Ubuntu xem phần bên dưới ↓
Khai báo danh tính
git config --global user.name "Ten Ban"
git config --global user.email "you@email.com"Tên & email này gắn vào mọi commit
Đăng nhập GitHub
gh auth loginCài GitHub CLI: brew install gh
Cài Git & GitHub CLI theo hệ điều hành
Cách nhanh nhất — mở PowerShell hoặc Command Prompt:
winget install --id Git.Git -e
winget install --id GitHub.cli -eKhông có winget? Tải bộ cài tại git-scm.com/download/win và cli.github.com
Cần Homebrew (brew.sh):
brew install git
brew install ghHoặc gõ git lần đầu, macOS sẽ mời cài Xcode Command Line Tools
Terminal:
sudo apt update
sudo apt install git ghBản gh cũ? Xem hướng dẫn repo chính thức tại github.com/cli/cli
Cài xong, xác nhận bằng cách xem phiên bản:
git --version
gh --versionRa số phiên bản là thành công
Lưu ý riêng cho Windows
git config --global core.autocrlf true để tránh cảnh báo LF/CRLF khi làm chung với team Mac/Linux. /c/Users/ban/du-an thay cho C:\Users\ban\du-an. Lệnh Git thường dùng
Tạo & lấy repo
git initBiến thư mục hiện tại thành repogit clone <url>Tải repo từ GitHub về máygit clone <url> tenClone vào thư mục tên khácgh repo clone user/repoClone bằng GitHub CLIThay đổi hàng ngày
git statusXem file nào đã đổigit add .Stage tất cả thay đổigit add file.tsStage một file cụ thểgit commit -m "msg"Lưu commit kèm mô tảgit commit -am "msg"Add + commit file đã trackgit diffXem chi tiết thay đổi chưa stageBranch (nhánh)
git branchLiệt kê các branchgit switch -c tenTạo + chuyển sang branch mớigit switch mainChuyển về branch maingit merge tenGộp branch "ten" vào branch hiện tạigit branch -d tenXóa branch đã mergeĐồng bộ với GitHub
git pushĐẩy commit lên remotegit push -u origin tenPush branch mới lần đầugit pullKéo thay đổi mới nhất vềgit fetchTải update nhưng chưa mergegit remote -vXem địa chỉ remoteXem lịch sử
git logDanh sách commitgit log --onelineMỗi commit một dòng, gọngit log --graphHiển thị dạng cây branchgit show <hash>Chi tiết một commitgit blame fileAi sửa dòng nào, khi nàoSửa lỗi & hoàn tác
git restore fileBỏ thay đổi chưa stage của filegit restore --staged fileUn-stage (bỏ khỏi git add)git commit --amendSửa commit vừa tạogit revert <hash>Tạo commit đảo ngược (an toàn)git reset --soft HEAD~1Hủy commit cuối, giữ codegit stashCất tạm thay đổi để làm việc khácLệnh gh
GitHub CLI cho phép tạo repo, mở PR, review... ngay trong terminal — không cần vào web.
Repository
gh repo createTạo repo mới (interactive)gh repo view --webMở repo trên trình duyệtgh repo forkFork repo về tài khoản bạnPull Request
gh pr createMở PR từ branch hiện tạigh pr listDanh sách PR đang mởgh pr checkout <số>Lấy PR của người khác về testgh pr mergeMerge PRIssue
gh issue createTạo issue mớigh issue listDanh sách issuegh issue view <số>Xem chi tiết issueTài khoản
gh auth loginĐăng nhập GitHubgh auth statusKiểm tra trạng thái đăng nhậpgh auth logoutĐăng xuấtFile cấu hình quan trọng
Liệt kê file/thư mục Git KHÔNG track (node_modules, .env, build...).
node_modules/
.env
dist/
.DS_StoreCấu hình riêng cho repo này: remote, branch, user.
git config user.email "..."
git remote set-url origin <url>Cấu hình toàn máy: tên, email, alias, editor mặc định.
git config --global core.editor "code --wait"
git config --global init.defaultBranch mainFile giới thiệu repo, hiển thị ngay trên trang GitHub.
# Ten Du An
Mo ta ngan gon, cach cai dat, cach chay.Golden Rules
Commit nhỏ & thường xuyên
Mỗi commit làm một việc rõ ràng. Đừng dồn 20 thay đổi vào một commit — khi có lỗi rất khó tìm và revert.
Commit message có ý nghĩa
Viết cái gì đã đổi & tại sao, không phải "update", "fix". Dùng format: type: mô tả.
feat: them nut dang nhap Google
fix: sua loi redirect sau khi logoutPull trước khi Push
Luôn git pull để lấy code mới nhất của team trước khi push. Tránh conflict và ghi đè công sức người khác.
Không code trực tiếp trên main
Tạo branch riêng cho mỗi tính năng/fix. Merge vào main qua Pull Request để team review trước.
git switch -c feature/loginKhông commit file bí mật
Thêm .env, key, password vào .gitignore NGAY từ đầu. Đã push lên rồi thì coi như đã lộ.
Ưu tiên revert hơn reset
Với code đã push, dùng git revert (tạo commit đảo ngược, an toàn) thay vì reset (viết lại lịch sử, gây rối cho team).
Branch & Pull Request — vì sao không code thẳng trên main
Bạn tách một nhánh riêng từ main để làm tính năng, commit thoải mái, rồi mở Pull Request để team review trước khi gộp lại. Main luôn sạch & chạy được.
Giải phẫu một Conflict
Conflict xảy ra khi bạn & đồng đội sửa cùng một dòng. Git không tự chọn được nên chèn các dấu đánh dấu vào file — việc của bạn là chọn giữ phần nào rồi xóa các dấu đó.
<<<<<<< HEAD tới ======= là code hiện tại của bạn.
======= tới >>>>>>> là code kéo về từ nhánh kia.
<<< === >>>, rồi git add + git commit.
Quy trình thực tế
Để AI lo phần Git cho bạn
Ngại nhớ lệnh? Claude Code có thể commit, tạo branch, mở PR và giải quyết conflict giúp bạn — chỉ cần mô tả bằng tiếng Việt.