Git

Git Cheatsheet

Tham khảo nhanh các lệnh Git theo nhóm — copy & paste khi cần.

Git Basics
  • git init

    Tạo repo Git rỗng tại thư mục hiện tại. Chạy không tham số để init thư mục đang đứng.

  • git clone [repo]

    Clone repo về máy. Repo có thể nằm trên local FS hoặc remote qua HTTP/SSH.

  • git config user.name [name]

    Định nghĩa author cho commit. Thêm --global để áp dụng cho mọi repo.

  • git add [path]

    Stage thay đổi để chuẩn bị commit. Dùng . để stage tất cả, -p để stage từng hunk.

  • git commit -m "msg"

    Commit snapshot đã stage với message inline.

  • git status

    Hiển thị file đã stage / chưa stage / untracked trong working tree.

Rewriting Git History
  • git commit --amend

    Thay commit gần nhất bằng staged changes hợp nhất. Không stage gì → chỉ sửa message.

  • git rebase [base]

    Rebase branch hiện tại lên base. base có thể là commit ID, branch, tag, hoặc HEAD~N.

  • git rebase -i HEAD~N

    Rebase tương tác — squash, reword, drop, edit từng commit.

  • git reflog

    Lịch sử mọi thay đổi HEAD — cứu hộ khi reset --hard nhầm.

  • git reset --hard [commit]

    Xoá staging + reset working tree về commit chỉ định. Nguy hiểm.

Sửa branch, commit và dọn lịch sử

Git Branches
  • git branch

    Liệt kê branch local. Thêm -a để xem cả remote.

  • git switch -c [name]

    Tạo và checkout sang branch mới (thay cho git checkout -b).

  • git switch [name]

    Chuyển sang branch khác.

  • git branch -d [name]

    Xoá branch local đã merge. -D để xoá force.

  • git push origin --delete [name]

    Xoá branch trên remote.

Merge & Rebase
  • git merge [branch]

    Merge branch chỉ định vào branch hiện tại.

  • git merge --squash [branch]

    Gộp tất cả commit của branch thành 1 commit duy nhất.

  • git rebase main

    Đem branch hiện tại lên đỉnh main, lịch sử thẳng hàng.

  • git rebase --continue

    Tiếp tục rebase sau khi resolve conflict. --abort để huỷ.

  • git cherry-pick [hash]

    Đem 1 commit cụ thể từ branch khác về branch hiện tại.

Inspect & Compare
  • git log --oneline --graph --all

    Đồ thị lịch sử commit gọn gàng cho tất cả branch.

  • git log -p [file]

    Lịch sử thay đổi của 1 file kèm diff.

  • git diff

    So sánh working tree với staging.

  • git diff --staged

    So sánh staging với commit gần nhất.

  • git blame [file]

    Xem ai sửa dòng nào, commit nào.

  • git show [hash]

    Hiển thị nội dung chi tiết của một commit.

Stash & Restore
  • git stash

    Cất tạm working changes để switch branch sạch.

  • git stash push -m "wip"

    Stash kèm message mô tả.

  • git stash list

    Liệt kê stash đã cất.

  • git stash pop

    Lấy stash gần nhất ra & xoá khỏi list.

  • git restore [file]

    Hoàn tác file (chưa stage) về trạng thái HEAD.

  • git restore --staged [file]

    Bỏ stage cho file.

Undo Changes
  • git reset --soft HEAD~1

    Bỏ commit gần nhất, giữ thay đổi đã stage.

  • git reset --mixed HEAD~1

    Bỏ commit + unstage (mặc định của git reset).

  • git reset --hard HEAD~1

    Bỏ commit + xoá hết thay đổi. Cẩn thận!

  • git revert [hash]

    Tạo commit ngược lại để huỷ commit cũ — an toàn cho branch chia sẻ.

  • git clean -fd

    Xoá file/thư mục untracked. -n để dry-run trước.

Remote
  • git remote -v

    Liệt kê remote URL.

  • git remote add origin [url]

    Thêm remote tên origin.

  • git fetch [remote]

    Tải object từ remote nhưng không merge.

  • git pull --rebase

    Fetch + rebase branch hiện tại lên upstream — lịch sử thẳng.

  • git push origin [branch]

    Đẩy branch lên remote.

  • git push --force-with-lease

    Force push an toàn — fail nếu remote có commit mới.

Tags & Releases
  • git tag v1.0.0

    Tạo lightweight tag tại HEAD.

  • git tag -a v1.0.0 -m "release"

    Annotated tag (có metadata, recommended cho release).

  • git push origin v1.0.0

    Đẩy tag cụ thể lên remote.

  • git push origin --tags

    Đẩy tất cả tag.

  • git tag -d v1.0.0

    Xoá tag local.

Setup
  • git config --global user.name "Your Name"

    Cấu hình tên author toàn cục.

  • git config --global user.email "you@x.com"

    Cấu hình email author.

  • git config --global init.defaultBranch main

    Đặt branch mặc định khi git init.

  • git config --global pull.rebase true

    Mặc định pull dùng rebase thay vì merge.

  • git config --global core.editor "code --wait"

    Dùng VS Code làm editor cho commit message.