Git ban đầu có thể khiến nhiều người cảm thấy e ngại. Hầu hết chúng ta chỉ sử dụng các lệnh cơ bản như git add, git commit và git push, và thực sự thì chúng hoạt động tốt cho đến khi gặp vấn đề. Sẽ có lúc bạn gặp phải khó khăn như lịch sử lộn xộn, nhánh bị hỏng hoặc lỗi bạn không thể tìm ra.
Đó cũng là lúc 10 lệnh git này phát huy tác dụng và trở thành cứu tinh cho bạn:
1. git reflog
Bạn đã bao giờ gặp lỗi nghiêm trọng đến mức ước mình có thể quay ngược thời gian? git reflog chính là cỗ máy thời gian mà bạn không hề biết mình đang có.
Lệnh này theo dõi mọi thứ bạn đã làm trong kho lưu trữ, ngay cả những commit bạn nghĩ đã mất. Bạn nên sử dụng nó khi vô tình xóa một nhánh hoặc cần khôi phục một commit sau khi reset không thành công.
Cú pháp của lệnh:
git reflog
2. git cherry-pick
Hãy tưởng tượng có một commit hoàn hảo trên một nhánh khác và bạn cần nó ngay lập tức mà không cần hợp nhất toàn bộ nhánh.
Đó là lúc git cherry-pick phát huy tác dụng. Lệnh này cho phép bạn chọn các commit cụ thể từ một nhánh và áp dụng chúng vào một nhánh khác, ví dụ như khi bạn muốn sửa lỗi từ feature-branch trong main mà không cần hợp nhất toàn bộ nhánh.
Cú pháp của lệnh:
git cherry-pick <commit-hash>
3. git bisect
Gỡ lỗi một lỗi đột ngột xuất hiện có thể rất mất thời gian. Thay vì kiểm tra thủ công từng commit, hãy để Git làm công việc điều tra cho bạn với git bisect.
Lệnh này thực hiện tìm kiếm nhị phân thông qua lịch sử commit của bạn để tìm ra chính xác commit nào đã gây ra lỗi.
Bạn cần sử dụng git bisect start
, git bisect bad
để đánh dấu commit hiện tại là xấu và git bisect good <commit-hash>
để đánh dấu commit tốt đã biết.
Git sẽ tiếp tục thu hẹp các commit cho đến khi tìm ra thủ phạm.
4. git stash pop
Bạn đang viết code giữa chừng thì một báo cáo lỗi quan trọng xuất hiện. Bạn cần chuyển nhánh mà không mất công việc của mình. git stash pop
chính là giải pháp.
Lệnh này sẽ lưu trữ các thay đổi chưa được commit của bạn để bạn có thể quay lại chúng sau đó. git stash lưu công việc của bạn, nhưng git stash pop
khôi phục nó và xóa nó khỏi danh sách stash, giữ cho mọi thứ gọn gàng.
Cú pháp của lệnh:
git stash pop
5. git reset --soft
Bạn đã bao giờ thực hiện một commit và nhận ra mình chưa sẵn sàng, ví dụ như quên hợp nhất nó với commit trước đó? git reset --soft
sẽ đưa commit của bạn trở lại khu vực staging mà không làm mất các thay đổi.
Lệnh này rất hữu ích khi bạn muốn làm lại một commit mà không mất tiến độ.
Cú pháp của lệnh:
git reset --soft HEAD~1
6. git blame
Cái tên nghe có vẻ buộc tội, nhưng git blame
không phải là để chỉ trích. Lệnh này hiển thị ai là người cuối cùng sửa đổi mỗi dòng trong một tệp.
Nó hữu ích khi bạn đang cố gắng hiểu tại sao một thay đổi cụ thể nào đó được thực hiện.
Cú pháp của lệnh:
git blame <file>
7. git log --oneline --graph
Việc xem xét một kho lưu trữ với nhiều nhánh có thể gây khó khăn. Lệnh git log --oneline --graph
cung cấp cho bạn cái nhìn tổng quan về dự án.
Nó hiển thị lịch sử commit của bạn ở định dạng trực quan đơn giản. Hãy sử dụng lệnh này để hiểu lịch sử của một nhánh hoặc cách các nhánh phân kỳ và hợp nhất. Thêm vào đó, hãy dùng lệnh git log --oneline --graph --all
để xem toàn bộ lịch sử.
8. git clean -f
Đôi khi, thư mục làm việc của bạn trở nên lộn xộn với các tệp không được theo dõi chất đống khắp nơi. git clean
giống như một đợt dọn dẹp mùa xuân cho kho lưu trữ của bạn.
Nó sẽ xóa các tệp không được theo dõi khỏi thư mục làm việc, đặc biệt hữu ích khi git pull
bị lỗi do xung đột với các tệp không được theo dõi này.
Cú pháp của lệnh:
git clean -f
9. git rebase -i
Rebase tương tác (git rebase -i
) là cây đũa thần để dọn dẹp lịch sử commit lộn xộn. Nó cho phép bạn hợp nhất, chỉnh sửa hoặc xóa các commit trong quá trình rebase.
Hãy sử dụng lệnh này trước khi hợp nhất để làm cho lịch sử commit của bạn trông sạch sẽ và chuyên nghiệp bằng cách sử dụng git rebase -i HEAD~<number-of-commits>
Lưu ý: Sử dụng lệnh này một cách tiết kiệm trên các nhánh công khai để tránh xung đột.
10. git diff --staged
Trước khi commit, sẽ rất tốt nếu biết chính xác những gì đã được staged. git diff --staged
sẽ hiển thị những thay đổi giữa khu vực staging và commit cuối cùng của bạn. Hãy sử dụng lệnh này để kiểm tra kỹ các thay đổi đã staged trước khi commit.
Cú pháp của lệnh:
git diff --staged
Cảm ơn các bạn đã theo dõi!