+1

10 Lệnh Git mà bạn ước mình biết sớm hơn

Git có thể khiến bạn cảm thấy choáng ngợp khi mới bắt đầu. Hầu hết các nhà phát triển chỉ sử dụng git add, git commit, và git push, và thường thì như vậy là đủ cho đến khi bạn gặp phải một vấn đề mà không biết cách giải quyết.

Đó là lúc 10 lệnh Git này có thể giúp bạn tiết kiệm thời gian và tránh sự bực bội. Hãy cùng tìm hiểu xem chúng là gì nhé!

1. git reflog – Khôi phục các commit bị mất

Đôi khi, bạn vô tình xóa một nhánh hoặc đặt lại (reset) về một commit sai. git reflog cho phép bạn quay ngược thời gian và khôi phục công việc đã mất.

Chức năng: Theo dõi mọi thay đổi được thực hiện trong kho lưu trữ (repository), ngay cả những thay đổi mà bạn nghĩ đã biến mất.

Khi nào nên sử dụng:

  • Bạn vô tình xóa một nhánh.
  • 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ể

Bạn cần một commit từ một nhánh khác nhưng không muốn gộp (merge) toàn bộ thay đổi. git cherry-pick giúp bạn chỉ đưa vào commit mà bạn cần.

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:

  • Bạn cần một bả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 xuất hiện nhưng bạn không biết commit nào đã gây ra, git bisect giúp bạn tìm ra nó một cách hiệu quả.

Chức năng: Sử dụng tìm kiếm nhị phân (binary search) để xác định commit nào đã gây ra vấn đề.

Khi nào sử dụng:

  • Bạn cần tìm commit nào đã giới thiệu một lỗi vào codebase.

Lệnh:

git bisect start
git bisect bad  # Mark the current commit as bad
git bisect good <commit-hash>  # Mark a known good commit

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 đề.

git stash pop

5. git reset --soft – Hoàn tác một commit mà không mất thay đổi

Bạn lỡ commit quá sớm và cần chỉnh sửa lại. git reset --soft giúp bạn đưa commit quay lại khu vực staging mà không làm mất 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:

  • Bạn cần chỉnh sửa commit cuối cùng trước khi push.

Lệnh:

git reset --soft HEAD~1

6. git blame – Theo dõi thay đổi trong một tệp

Nếu bạn muốn hiểu lý do tại sao một thay đổi cụ thể được thực hiện, git blame sẽ hiển thị lần chỉnh sửa cuối cùng của từng dòng trong tệp.

Chức năng: Hiển thị lịch sử commit cho từng dòng trong một tệp.

Khi nào sử dụng:

  • Bạn muốn biết ai đã thay đổi một dòng mã cụ thể và trong commit nào.

Lệnh:

git blame <file>

7. git log --oneline --graph – Xem lịch sử commit một cách rõ ràng

Kho lưu trữ có nhiều nhánh có thể trở nên lộn xộn. Lệnh này cung cấp một cái nhìn trực quan và đơn giản về lịch sử commit.

Chức năng: Hiển thị các commit theo một định dạng có cấu trúc, dễ đọc.

Khi nào sử dụng:

  • Bạn cần hiểu cách các nhánh phân tách và hợp nhất.

Lệnh:

git log --oneline --graph --all

8. git clean -f – Xóa các tệp chưa được theo dõi

Nếu thư mục làm việc của bạn bị lộn xộn với các tệp chưa được theo dõi, git clean -f sẽ giúp bạn dọn dẹp.

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:

  • Bạn có nhiều tệp chưa được theo dõi gây ảnh hưởng đến công việc.

Lệnh:

git clean -f

9. git rebase -i – Chỉnh sửa lịch sử commit

Khi bạn cần dọn dẹp commit trước khi merge, git rebase -i cho phép bạn gộp (squash), 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:

  • Trước khi merge, để làm cho lịch sử commit gọn gàng và dễ hiểu hơn.

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 — nó sẽ thay đổi lịch sử commit và có thể gây xung đột.

10. git diff --staged – Xem lại các thay đổi đã đưa vào staging

Trước khi commit, bạn có thể muốn kiểm tra kỹ những gì sắp được đẩy lên. git diff --staged sẽ hiển thị chính xác những thay đổi đó.

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:

  • 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 các mẹo này sẽ hữu ích cho các bạn!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí