Git là một hệ thống quản lý phiên bản phân tán giúp theo dõi các thay đổi trong mã nguồn của dự án. Git cho phép nhiều người cùng làm việc trên một dự án một cách đồng thời và hiệu quả.
Dưới đây là một danh sách các lệnh Git cơ bản giúp bạn làm việc với Git một cách dễ dàng:
1. Danh sách các lệnh Git cơ bản
1.1 Cấu hình Git
git config --global user.name "Tên của bạn"
Cấu hình tên người dùng Git trên toàn hệ thống.git config --global user.email "email@domain.com"
Cấu hình địa chỉ email người dùng.git config --global color.ui auto
Bật màu sắc cho các lệnh Git.
1.2 Khởi tạo và sao chép kho Git
git init
Khởi tạo một kho Git mới trong thư mục hiện tại.git clone <URL>
Sao chép (clone) một kho Git từ máy chủ về máy tính cá nhân.
1.3 Làm việc với các nhánh (branch)
git branch
Liệt kê tất cả các nhánh (branches) hiện có.git branch <tên_nhánh>
Tạo một nhánh mới.git checkout <tên_nhánh>
Chuyển sang nhánh mới.git checkout -b <tên_nhánh>
Tạo và chuyển sang nhánh mới trong một lệnh.git merge <tên_nhánh>
Gộp nhánh chỉ định vào nhánh hiện tại.git branch -d <tên_nhánh>
Xóa một nhánh (nhánh phải được merge trước khi xóa).
1.4 Thêm, commit và theo dõi thay đổi
git status
Kiểm tra trạng thái hiện tại của kho, hiển thị file nào đã thay đổi.git add <tên_file>
Thêm file vào khu vực tạm để chuẩn bị commit.git add .
Thêm tất cả các thay đổi vào khu vực tạm.git commit -m "Thông điệp commit"
Commit các thay đổi với thông điệp.git commit -a -m "Thông điệp commit"
Tự động add và commit tất cả các file đã thay đổi (bỏ qua các file mới chưa được add).
1.5 Theo dõi lịch sử
git log
Hiển thị lịch sử commit.git log --oneline
Hiển thị lịch sử commit dưới dạng ngắn gọn, mỗi commit trên một dòng.git diff
So sánh sự khác biệt giữa các file đã thay đổi nhưng chưa commit.git diff <tên_file>
So sánh sự khác biệt của file cụ thể.
1.6 Làm việc với từ xa (remote)
git remote -v
Kiểm tra các kho từ xa (remote) đã được cấu hình.git remote add <tên_remote> <URL>
Thêm một kho từ xa mới.git pull <remote> <nhánh>
Lấy thay đổi từ nhánh của remote về và gộp vào nhánh hiện tại.git push <remote> <nhánh>
Đẩy các commit từ nhánh hiện tại lên nhánh của remote.
1.7 Quản lý thay đổi
git reset <file>
Bỏ các thay đổi của file khỏi khu vực tạm nhưng giữ lại các thay đổi trong file.git reset --hard <commit>
Khôi phục trạng thái của repository về một commit cụ thể, bỏ tất cả các thay đổi.git stash
Lưu trữ tạm thời các thay đổi chưa commit.git stash pop
Khôi phục lại các thay đổi đã lưu trữ tạm thời.
1.8 Khác
git rm <file>
Xóa file khỏi kho Git và commit sự thay đổi.git mv <tên_cũ> <tên_mới>
Đổi tên file và commit sự thay đổi.git rebase <branch>
Áp dụng các commit từ một nhánh khác lên nhánh hiện tại, tạo ra lịch sử commit sạch sẽ hơn.
2. Danh sách các lệnh Git nâng cao
Các lệnh Git nâng cao giúp bạn giải quyết các tình huống phức tạp hơn, bao gồm sửa lỗi trong lịch sử commit, làm việc với các nhánh phức tạp và tối ưu hóa quá trình làm việc nhóm.
2.1 Git Rebase (Chỉnh sửa lịch sử commit)
git rebase <branch>
Rebase các commit từ nhánh<branch>
lên nhánh hiện tại, tạo ra lịch sử commit sạch sẽ hơn (trực quan hơn so vớimerge
).git rebase --interactive <commit>
hoặcgit rebase -i <commit>
Thực hiện rebase tương tác, cho phép bạn thay đổi, sửa, hoặc kết hợp các commit trước đó.
Ví dụ:git rebase -i HEAD~3
sẽ cho phép bạn chỉnh sửa ba commit gần nhất.
2.2 Git Cherry-Pick (Lựa chọn commit từ nhánh khác)
git cherry-pick <commit>
Sao chép một commit cụ thể từ nhánh khác và áp dụng nó vào nhánh hiện tại.
Ví dụ:
git cherry-pick xxx4953
Commit có mã băm xxx4953
sẽ được áp dụng vào nhánh hiện tại.
2.3 Git Reset (Hoàn tác các thay đổi)
git reset --soft <commit>
Hoàn tác tất cả các commit sau commit<commit>
nhưng vẫn giữ lại các thay đổi trong khu vực tạm (staging).git reset --mixed <commit>
Hoàn tác commit và đưa các thay đổi vào khu vực tạm, nhưng không ảnh hưởng đến thư mục làm việc.git reset --hard <commit>
Hoàn tác commit và tất cả các thay đổi, xóa sạch mọi thứ kể từ commit<commit>
. Sử dụng cẩn thận vì bạn có thể mất dữ liệu không được commit.
2.4 Git Reflog (Lịch sử tham chiếu)
git reflog
Hiển thị tất cả các thay đổi về tham chiếu (refs) trong repository, cho phép bạn tìm lại các commit bị mất do reset, rebase, hoặc amend.
2.5 Git Stash (Lưu trữ tạm thời các thay đổi)
git stash
Lưu trữ tạm thời các thay đổi chưa commit trong một ngăn xếp (stack), để bạn có thể làm việc trên các nhánh khác mà không mất đi các thay đổi chưa hoàn thành.git stash pop
Khôi phục các thay đổi đã được stash trước đó và xóa nó khỏi ngăn xếp.git stash apply
Khôi phục lại các thay đổi từ stash mà không xóa stash khỏi ngăn xếp.git stash list
Liệt kê tất cả các stash đã lưu trữ.git stash drop
Xóa stash đầu tiên trong danh sách.
2.6 Git Amend (Sửa đổi commit cuối cùng)
git commit --amend
Sửa đổi commit cuối cùng bằng cách thêm các thay đổi mới hoặc thay đổi thông điệp commit.
Ví dụ: Nếu bạn quên thêm file vào commit trước, bạn có thể thêm file và dùng lệnh --amend
để chỉnh sửa.
git add git commit --amend
2.7 Git Bisect (Tìm lỗi trong commit)
git bisect start
Bắt đầu quá trình tìm kiếm commit gây lỗi (bug).git bisect bad
Đánh dấu commit hiện tại là commit “bad” (gây ra lỗi).git bisect good <commit>
Đánh dấu một commit trước đó mà bạn biết là không có lỗi (commit “good”).
Git sẽ chia đôi lịch sử commit và kiểm tra từng commit cho đến khi tìm ra commit gây lỗi.
2.8 Git Blame (Xem chi tiết thay đổi)
git blame <file>
Hiển thị thông tin về từng dòng của một file, ai đã chỉnh sửa và commit nào đã thay đổi nó.
2.9 Git Submodule (Quản lý module con)
git submodule add <URL>
Thêm một kho Git khác vào kho Git hiện tại dưới dạng submodule.git submodule update --init
Khởi tạo và đồng bộ các submodule đã tồn tại trong dự án.
2.10 Git Clean (Xóa file không theo dõi)
git clean -f
Xóa các file chưa được theo dõi trong thư mục làm việc.git clean -fd
Xóa các file và thư mục chưa được theo dõi.
2.11 Git Tag (Gắn thẻ commit)
git tag <tên_tag>
Tạo một thẻ (tag) để đánh dấu một phiên bản cụ thể của mã nguồn.git tag -a <tên_tag> -m "Mô tả"
Tạo một thẻ chú thích (annotated tag) với mô tả cụ thể.git push origin <tên_tag>
Đẩy thẻ lên kho từ xa.git tag -d <tên_tag>
Xóa một thẻ cục bộ.git push origin :refs/tags/<tên_tag>
Xóa một thẻ từ xa.
2.12 Git Remote (Quản lý các kho từ xa)
git remote add <tên_remote> <URL>
Thêm một remote mới với tên chỉ định và URL của kho từ xa.git remote rename <tên_cũ> <tên_mới>
Đổi tên remote.git remote rm <tên_remote>
Xóa remote.
2.13 Git Fetch vs Pull (Lấy và cập nhật thay đổi từ xa)
git fetch
Lấy tất cả các thay đổi từ kho từ xa về nhưng không gộp vào nhánh hiện tại.git pull
Lấy các thay đổi từ kho từ xa và gộp (merge) vào nhánh hiện tại.
2.14 Git Hooks (Tự động hóa tác vụ)
pre-commit
Hook này được chạy trước khi commit. Bạn có thể sử dụng nó để kiểm tra mã nguồn (linter) hoặc chạy kiểm thử (tests).post-merge
Hook này được chạy sau khi một merge được thực hiện. Thường dùng để tự động thiết lập môi trường sau khi merge.