Tài liệu tham khảo nhanh Git
Tài liệu tham khảo Git có thể tìm kiếm và in được — config, nhánh, merging, rebasing, remote, stashing, tag và hoàn tác thay đổi. Miễn phí.
Cài đặt & cấu hình
10git config --global user.name "Jane Doe"
Đặt tên gắn vào commit của bạn
git config --global user.email "jane@example.com"
Đặt email gắn vào commit của bạn
git config --global init.defaultBranch main
Khiến repo mới khởi đầu trên nhánh "main"
git config --global core.editor "code --wait"
Dùng VS Code làm trình soạn thảo Git mặc định
git config --global pull.rebase true
Rebase thay vì merge khi pull
git config --global alias.co checkout
Tạo bí danh rút gọn (git co)
git config --global --list
Liệt kê mọi giá trị cấu hình toàn cục
git config user.email
In email của repo hiện tại
git config --global color.ui auto
Bật màu cho đầu ra dòng lệnh
git help <command>
Mở trang hướng dẫn cho một lệnh
Tạo & clone repo
9git init
Khởi tạo repo mới trong thư mục hiện tại
git init my-project
Tạo repo mới trong thư mục mới
git clone https://example.com/repo.git
Clone repo từ xa qua HTTPS
git clone git@example.com:user/repo.git
Clone repo từ xa qua SSH
git clone <url> my-dir
Clone vào thư mục có tên chỉ định
git clone --depth 1 <url>
Shallow clone chỉ với commit mới nhất
git clone --branch dev <url>
Clone và checkout một nhánh cụ thể
git clone --recurse-submodules <url>
Clone và khởi tạo mọi submodule
git remote add origin <url>
Gắn một remote vào repo local có sẵn
Staging & commit
11git add file.txt
Stage một file cho commit kế tiếp
git add .
Stage mọi thay đổi trong thư mục hiện tại
git add -A
Stage mọi thay đổi gồm cả xóa
git add -p
Stage tương tác các hunk đã chọn
git commit -m "Add login form"
Commit thay đổi đã stage kèm thông điệp
git commit -am "Fix typo"
Stage file đã theo dõi và commit trong một bước
git commit --amend
Sửa commit gần nhất
git commit --amend --no-edit
Thêm thay đổi đã stage vào commit cuối
git rm file.txt
Xóa một file và stage thao tác xóa
git mv old.txt new.txt
Đổi tên hoặc di chuyển file và stage nó
git reset file.txt
Bỏ stage một file nhưng giữ thay đổi
Nhánh
10git branch
Liệt kê mọi nhánh local
git branch -a
Liệt kê nhánh local và remote-tracking
git switch -c feature/login
Tạo nhánh mới và chuyển sang đó
git switch main
Chuyển sang nhánh có sẵn
git checkout -b hotfix
Cách cổ điển để tạo và chuyển nhánh
git branch -m old-name new-name
Đổi tên một nhánh
git branch -d feature/login
Xóa nhánh local đã merge
git branch -D feature/login
Buộc xóa nhánh local chưa merge
git push origin --delete feature/login
Xóa một nhánh trên remote
git switch -
Chuyển về nhánh trước đó
Merge & rebase
10git merge feature/login
Merge một nhánh vào nhánh hiện tại
git merge --no-ff feature/login
Merge và luôn tạo merge commit
git merge --squash feature/login
Gộp một nhánh thành một thay đổi đã stage
git merge --abort
Hủy merge đang có xung đột
git rebase main
Phát lại commit nhánh hiện tại lên main
git rebase -i HEAD~3
Sửa tương tác 3 commit cuối
git rebase --continue
Tiếp tục rebase sau khi giải quyết xung đột
git rebase --abort
Hủy một rebase đang diễn ra
git cherry-pick <hash>
Áp một commit lên nhánh hiện tại
git mergetool
Mở công cụ giải quyết xung đột merge
Remote & đồng bộ
11git remote -v
Liệt kê remote đã cấu hình và URL của chúng
git remote add upstream <url>
Thêm remote thứ hai tên upstream
git remote set-url origin <url>
Đổi URL của một remote có sẵn
git fetch
Tải thay đổi từ xa mà không merge
git fetch --all --prune
Fetch mọi remote và bỏ nhánh cũ
git pull
Fetch và tích hợp thay đổi từ xa
git pull --rebase
Pull và rebase commit local lên trên
git push
Đẩy commit local lên remote
git push -u origin main
Push và đặt nhánh upstream theo dõi
git push --force-with-lease
Force-push an toàn không ghi đè người khác
git push origin --tags
Push mọi tag local lên remote
Kiểm tra & so sánh
10git status
Hiển thị file đã stage, chưa stage và chưa theo dõi
git status -s
Hiển thị trạng thái ở dạng ngắn gọn
git diff
Hiển thị thay đổi chưa stage so với index
git diff --staged
Hiển thị thay đổi đã stage cho commit kế tiếp
git diff main..feature
So sánh hai nhánh
git diff HEAD~1 HEAD
So sánh commit cuối với commit cha
git show <hash>
Hiển thị chi tiết và diff của một commit
git show HEAD:file.txt
Hiển thị file như trong một commit
git log --stat
Hiển thị commit kèm tóm tắt file thay đổi
git shortlog -sn
Đếm commit nhóm theo tác giả
Hoàn tác thay đổi
10git restore file.txt
Bỏ thay đổi chưa stage trong một file
git restore --staged file.txt
Bỏ stage một file nhưng giữ thay đổi
git restore --source=HEAD~1 file.txt
Khôi phục file từ một commit trước
git checkout -- file.txt
Cách cổ điển để bỏ thay đổi local
git reset --soft HEAD~1
Hoàn tác commit cuối, giữ thay đổi đã stage
git reset --mixed HEAD~1
Hoàn tác commit cuối, giữ thay đổi chưa stage
git reset --hard HEAD~1
Hoàn tác commit cuối và bỏ thay đổi
git revert <hash>
Tạo commit mới hoàn tác một commit
git clean -fd
Xóa file và thư mục chưa theo dõi
git clean -nd
Xem trước những gì clean sẽ xóa
Stash
10git stash
Lưu thay đổi chưa commit và dọn cây làm việc
git stash push -m "wip"
Stash thay đổi kèm thông điệp mô tả
git stash -u
Stash gồm cả file chưa theo dõi
git stash list
Liệt kê mọi bộ thay đổi đã stash
git stash show -p
Hiển thị diff của stash mới nhất
git stash apply
Áp lại stash mới nhất và giữ nó
git stash pop
Áp lại stash mới nhất và xóa nó
git stash apply stash@{2}
Áp lại một stash cụ thể theo chỉ số
git stash drop stash@{0}
Xóa một mục stash
git stash clear
Xóa mọi mục stash
Tag
9git tag
Liệt kê mọi tag
git tag v1.0.0
Tạo tag nhẹ tại HEAD
git tag -a v1.0.0 -m "Release 1.0.0"
Tạo tag chú thích kèm thông điệp
git tag -a v1.0.0 <hash>
Gắn tag cho một commit cũ cụ thể
git show v1.0.0
Hiển thị chi tiết của một tag
git push origin v1.0.0
Push một tag lên remote
git push origin --tags
Push mọi tag local lên remote
git tag -d v1.0.0
Xóa một tag ở local
git push origin --delete v1.0.0
Xóa một tag trên remote
Log & lịch sử
12git log
Hiển thị toàn bộ lịch sử commit
git log --oneline
Hiển thị log gọn một dòng mỗi commit
git log --oneline --graph --all
Trực quan hóa nhánh dạng đồ thị ASCII
git log -p
Hiển thị lịch sử commit kèm diff
git log --author="Jane"
Lọc lịch sử theo tác giả
git log --since="2 weeks ago"
Lọc lịch sử theo khoảng ngày
git log --pretty=format:"%h %an %s"
Tùy chỉnh định dạng đầu ra log
git blame file.txt
Hiển thị ai sửa từng dòng gần nhất
git reflog
Hiển thị lịch sử HEAD đã từng ở đâu
git bisect start
Bắt đầu tìm nhị phân commit lỗi
git bisect good <hash>
Đánh dấu commit là tốt khi bisect
git bisect bad
Đánh dấu commit hiện tại là lỗi
Không có mục nào khớp với “:q”.
Cần trợ giúp?
Gặp sự cố với công cụ này? Hãy cho đội ngũ của chúng tôi biết.