Git là một công cụ quản lý phiên bản rất mạnh mẽ nhưng có thể khiến những người mới bắt đầu cảm thấy choáng ngợp. Nhiều lập trình viên chỉ quen với các lệnh cơ bản như git add
, git commit
, và git push
, nhưng họ sẽ sớm nhận ra rằng có nhiều tính năng hữu ích mà Git cung cấp. Dưới đây là 10 lệnh Git mà bạn ước mình biết sớm hơn để giúp bạn tiết kiệm thời gian và tránh những phiền toái trong quá trình phát triển phần mềm.
1. git reflog
– Khôi phục các commit bị mất
Khi bạn vô tình xóa một nhánh hoặc đặt lại (reset) về một commit sai, lệnh git reflog
cho phép bạn khôi phục lại công việc đã mất.
Chức năng: Theo dõi mọi thay đổi trong kho lưu trữ, kể cả những thay đổi mà bạn nghĩ đã biến mất.
Khi nào nên sử dụng:
- Khi bạn vô tình xóa một nhánh.
- Khi bạn cần khôi phục một commit sau khi đã reset sai.
Lệnh:
git reflog
2. git cherry-pick
– Áp dụng các commit cụ thể
Thỉnh thoảng, bạn cần một commit từ nhánh khác mà không muốn gộp toàn bộ thay đổi. Lệnh này sẽ giúp bạn chỉ áp dụng commit cần thiết.
Chức năng: Cho phép bạn áp dụng một commit cụ thể từ nhánh này sang nhánh khác.
Khi nào sử dụng:
- Khi bạn cần sửa lỗi từ một nhánh khác mà không muốn gộp các thay đổi không cần thiết.
Lệnh:
git cherry-pick <commit-hash>
3. git bisect
– Tìm commit gây lỗi
Khi một lỗi xảy ra và bạn không biết commit nào đã gây ra nó, lệnh git bisect
có thể giúp bạn tìm ra nhanh chóng bằng cách sử dụng tìm kiếm nhị phân.
Chức năng: Giúp xác định commit đã gây ra vấn đề.
Khi nào sử dụng:
- Khi bạn cần tìm ra commit nào đã gây ra một lỗi.
Lệnh:
git bisect start
git bisect bad
git bisect good <commit-hash>
Git sẽ hướng dẫn bạn qua từng commit cho đến khi xác định được commit gây ra vấn đề.
4. git reset --soft
– Hoàn tác một commit mà không mất thay đổi
Nếu bạn lỡ commit quá sớm và cần chỉnh sửa lại, git reset --soft
sẽ giúp bạn đưa commit quay lại khu vực staging mà không làm mất các thay đổi.
Chức năng: Cho phép bạn chỉnh sửa commit trước đó mà không mất các thay đổi đã thực hiện.
Khi nào sử dụng:
- Khi bạn cần chỉnh sửa commit cuối cùng trước khi commit lên remote.
Lệnh:
git reset --soft HEAD~1
5. git blame
– Theo dõi thay đổi trong một tệp
Nếu bạn muốn biết ai đã thực hiện một thay đổi cụ thể, git blame
sẽ hiển thị lần chỉnh sửa cuối cùng cho từng dòng trong tệp.
Chức năng: Hiển thị lịch sử commit cho từng dòng trong tệp.
Khi nào sử dụng:
- Khi bạn muốn xác định ai đã thay đổi một dòng mã cụ thể.
Lệnh:
git blame <file>
6. git log --oneline --graph
– Xem lịch sử commit một cách trực quan
Trong kho lưu trữ lớn với nhiều nhánh, lệnh này cung cấp một cái nhìn rõ ràng về lịch sử commit.
Chức năng: Hiển thị lịch sử commit theo định dạng dễ đọc và trực quan.
Khi nào sử dụng:
- Khi bạn cần hiểu rõ cách các nhánh phân tách và hợp nhất.
Lệnh:
git log --oneline --graph --all
7. git clean -f
– Dọn dẹp các tệp chưa được theo dõi
Nếu thư mục làm việc của bạn có quá nhiều tệp chưa được theo dõi, sử dụng git clean -f
sẽ giúp bạn dọn dẹp dễ dàng.
Chức năng: Xóa các tệp chưa được theo dõi khỏi thư mục làm việc.
Khi nào sử dụng:
- Khi bạn có nhiều tệp chưa được theo dõi gây cản trở công việc.
Lệnh:
git clean -f
8. git rebase -i
– Chỉnh sửa lịch sử commit
Khi bạn cần dọn dẹp lịch sử commit trước khi thực hiện merge, lệnh git rebase -i
cho phép bạn gộp, chỉnh sửa hoặc xóa commit.
Chức năng: Cho phép bạn chỉnh sửa lịch sử commit một cách tương tác.
Khi nào sử dụng:
- Khi bạn muốn làm cho lịch sử commit gọn gàng và dễ hiểu hơn trước khi thực hiện merge.
Lệnh:
git rebase -i HEAD~<number-of-commits>
Lưu ý: Tránh sử dụng lệnh này trên các nhánh đã được đẩy lên remote, vì nó sẽ thay đổi lịch sử commit và có thể gây ra xung đột.
9. git diff --staged
– Xem lại các thay đổi đã đưa vào khu vực staging
Trước khi commit, đôi khi bạn muốn kiểm tra các thay đổi đã staged. Lệnh này sẽ giúp bạn xem những gì sắp được đẩy lên.
Chức năng: Hiển thị sự khác biệt giữa khu vực staging và commit cuối cùng.
Khi nào sử dụng:
- Khi bạn muốn xác minh các thay đổi đã được staged trước khi commit.
Lệnh:
git diff --staged
Hy vọng rằng các mẹo và lệnh Git này sẽ hữu ích cho bạn trong quá trình phát triển phần mềm!
source: viblo