Skip to content

Lệnh Git được giải thích

Các lệnh Git bạn thực sự dùng, nhóm theo công việc: thiết lập kho, tạo snapshot cho công việc, tạo nhánh và hợp nhất, đọc lịch sử, chia sẻ với remote, hoàn tác sai lầm, cất tạm công việc và quản lý tệp cùng submodule. Mỗi dòng ghép lệnh với một lời gọi thực tế.

Git có hàng trăm lệnh, nhưng công việc hằng ngày chỉ cần một số ít. Mô hình tinh thần là: cây làm việc là các tệp của bạn, index (vùng staging) là commit tiếp theo, và HEAD là commit hiện tại. Bạn stage, bạn commit, bạn chia sẻ. Đọc status thường xuyên. Mọi thứ dưới đây giả định một lệnh đã tồn tại nếu nó được liệt kê.

Bảng tham chiếu · 55 mục
55 of 55 rows
Cài đặt và cấu hình
Đặt tên, email hoặc trình soạn thảo của bạn một lần cho mọi repo.git config --global user.name "Ada"
Đặt tên viết tắt cho một lệnh bạn hay gõ.git config --global alias.co checkout
Tạo một kho mới trong thư mục hiện tại.git init
Sao chép một kho từ xa về máy của bạn.git clone git@github.com:org/repo.git
Chỉ sao chép các commit mới nhất của một nhánh duy nhất.git clone --depth 1 --single-branch git@github.com:org/repo.git
Cơ bản về snapshot
Hiện những gì đã staged, đã sửa và chưa được theo dõi.git status -sb
Stage thay đổi để chúng vào commit tiếp theo.git add src/app.ts
Xem thay đổi từng phần và chỉ stage những phần bạn chấp nhận.git add -p src/app.ts
Stage thay đổi của mọi tệp đang được theo dõi mà không thêm tệp mới.git add -u
Ghi lại các thay đổi đã stage thành một commit mới.git commit -m "fix: null check"
Thay thế commit cuối bằng một commit đã sửa.git commit --amend -m "fix: handle empty input"
Hiện thay đổi chưa stage, hoặc thay đổi đã stage với --staged.git diff --staged
Hiện mọi thay đổi kể từ commit cuối, dù đã stage hay chưa.git diff HEAD
Nhánh và hợp nhất
Liệt kê, tạo hoặc xóa nhánh.git branch feature-x
Xóa một nhánh đã hợp nhất (-D ép xóa, -a liệt kê mọi nhánh).git branch -d feature-x
Chuyển nhánh (lệnh thay thế hiện đại cho checkout).git switch feature-x
Tạo nhánh mới và chuyển sang nó trong một bước.git switch -c feature-x
Chuyển nhánh hoặc khôi phục tệp (lệnh cũ, phạm vi rộng hơn).git checkout feature-x
Đưa thay đổi của nhánh khác vào nhánh hiện tại.git merge feature-x
Hủy một lệnh hợp nhất xung đột và trả nhánh về trạng thái trước đó.git merge --abort
Phát lại các commit của nhánh hiện tại trên đỉnh một nhánh khác.git rebase main
Gộp, sắp xếp lại hoặc sửa các commit trong khi phát lại chúng.git rebase -i main
Sao chép một commit duy nhất từ nhánh khác sang nhánh này.git cherry-pick a1b2c3d
Đánh dấu một commit bằng nhãn dễ đọc như phiên bản.git tag -a v1.2.0
Checkout một nhánh khác trong một thư mục riêng cùng lúc.git worktree add ../repo-feature feature-x
Xem lịch sử
Duyệt lịch sử commit.git log --oneline --graph --decorate
Duyệt lịch sử từ mọi nhánh, không chỉ nhánh hiện tại.git log --oneline --graph --all
Hiện diff đầy đủ và thông điệp của một commit.git show HEAD
Hiện ai là người cuối cùng sửa từng dòng của một tệp.git blame src/app.ts
Hiện mọi commit mà HEAD từng trỏ đến, kể cả cái đã bị bỏ.git reflog
Tìm kiếm lịch sử theo từng nửa để tìm commit gây lỗi.git bisect start
Tóm tắt commit theo tác giả.git shortlog -sn
Đặt tên commit hiện tại bằng cách đếm từ tag gần nhất.git describe --tags
Cộng tác từ xa
Liệt kê hoặc thêm các kho từ xa.git remote add origin <url>
Liệt kê các remote kèm URL fetch và push của chúng.git remote -v
Tải xuống thay đổi từ xa mà không đổi nhánh của bạn.git fetch origin
Tải xuống thay đổi từ xa và bỏ tham chiếu đến nhánh từ xa đã xóa.git fetch --prune
Fetch và hợp nhất các thay đổi từ xa của nhánh hiện tại.git pull --rebase
Gửi commit cục bộ lên remote.git push -u origin feature-x
Ghi đè nhánh từ xa, nhưng chỉ khi chưa ai push trước.git push --force-with-lease origin feature-x
Hoàn tác thay đổi
Bỏ thay đổi trong cây làm việc, hoặc unstage chúng.git restore src/app.ts
Unstage một tệp và giữ các chỉnh sửa trong cây làm việc.git restore --staged src/app.ts
Di chuyển đỉnh nhánh hiện tại và tùy chọn cả index.git reset --hard HEAD~1
Thêm một commit mới để hoàn tác commit trước đó (an toàn khi chia sẻ).git revert HEAD
Xóa các tệp và thư mục chưa được theo dõi.git clean -fd
Cất tạm (stash)
Lưu công việc chưa commit và đặt lại cây làm việc.git stash -u
Hiện mọi stash bạn đã lưu.git stash list
Áp dụng lại một stash và vẫn giữ nó trong danh sách.git stash apply stash@{1}
Xóa một stash bạn không còn cần.git stash drop stash@{1}
Áp dụng lại stash gần nhất và bỏ nó khỏi danh sách.git stash pop
Tệp và submodule
Di chuyển hoặc đổi tên một tệp và stage thay đổi.git mv old.ts src/new.ts
Xóa một tệp và stage việc xóa.git rm src/old.ts
Theo dõi một kho khác như một thư mục bên trong kho này.git submodule add git@github.com:org/lib.git lib
Chỉ checkout những thư mục bạn nêu tên từ một kho lớn.git sparse-checkout set src docs
Xuất cây của một commit thành tệp tar hoặc zip.git archive -o repo.zip HEAD