Ưu điểm của hệ thống kiểm soát phiên bản là nó ghi lại các thay đổi. Những bản ghi này cho phép chúng ta truy xuất dữ liệu như commit, tìm ra lỗi, cập nhật. Nhưng, tất cả lịch sử này sẽ trở nên vô ích nếu chúng ta không thể điều hướng nó. Lúc này, chúng ta cần lệnh git log.
Git log là một công cụ tiện ích để xem lại và đọc lịch sử của mọi thứ xảy ra với một kho lưu trữ. Nhiều tùy chọn có thể được sử dụng với nhật ký git để làm cho lịch sử cụ thể hơn.
Nói chung, git log là một bản ghi các commit. Nhật ký git chứa dữ liệu sau:
- Băm commit , là dữ liệu với 40 ký tự được tạo bởi thuật toán SHA (Thuật toán băm bảo mật). Đó là một số duy nhất.
- Siêu dữ liệu của Tác giả : Thông tin của các tác giả như tên tác giả và email.
- Siêu dữ liệu ngày commit : Đó là dấu thời gian ngày cho thời gian commit.
- Tiêu đề / tin nhắn commit : Đây là tin nhắn commit.
Nội dung chính
1. Làm thế nào để thoát lệnh git log?
Có thể có một tình huống xảy ra, bạn chạy lệnh git log và bạn bị mắc kẹt ở đó. Bạn muốn gõ hoặc quay lại bash, nhưng bạn không thể. Khi bạn nhấp vào phím Enter , nó sẽ điều hướng bạn đến lệnh cũ hơn cho đến khi kết thúc.
Giải pháp cho vấn đề này là để nhấn các q (Q cho bỏ) . Nó sẽ giúp bạn thoát khỏi tình huống và đưa bạn trở lại dòng lệnh. Bây giờ, bạn có thể thực hiện bất kỳ lệnh nào.
2. Xem Nhật ký trong Git
Lệnh git log là một trong những lệnh thông thường nhất của git. Đây là lệnh hữu ích nhất cho Git. Mỗi khi bạn cần kiểm tra lịch sử, bạn phải sử dụng lệnh git log. Lệnh git log sẽ hiển thị các commit gần đây nhất và trạng thái của phần HEAD. Nó sẽ sử dụng như:
git log
Lệnh trên sẽ hiển thị các commit cuối cùng. Hãy xem xét đầu ra dưới đây:
Bạn nhấn phím q để thoát khỏi trình xem log của git nha.
Lệnh trên liệt kê tất cả các commit gần đây. Mỗi commit chứa một số sha-id duy nhất, được tạo bởi thuật toán SHA. Nó cũng bao gồm ngày, giờ, tác giả và một số chi tiết bổ sung.
Chúng ta có thể thực hiện một số hành động như cuộn, nhảy, di chuyển và thoát trên dòng lệnh. Để cuộn trên dòng lệnh, nhấn k để di chuyển lên, j để di chuyển xuống, phím cách để cuộn xuống toàn trang để cuộn lên theo một trang và q để thoát khỏi dòng lệnh.
3. Git Log Oneline
Tùy chọn một dòng(Oneline) được sử dụng để hiển thị đầu ra dưới dạng một commit trên mỗi dòng. Nó cũng hiển thị đầu ra một cách ngắn gọn như bảy ký tự đầu tiên của commit SHA và tin nhắn commit.
Nó sẽ được sử dụng như sau:
git log --oneline
Vì vậy, thông thường chúng ta có thể nói rằng cờ –oneline làm cho nhật ký git hiển thị:
- một commit trên mỗi dòng
- bảy ký tự đầu tiên của SHA
- thông điệp commit
Hãy xem xét đầu ra dưới đây:
Như chúng ta có thể thấy chính xác hơn từ đầu ra ở trên, mọi commit chỉ được đưa ra trong một dòng với số sha bảy chữ số và thông báo commit.
4. Thống kê nhật ký của Git
Lệnh nhật ký hiển thị các file đã được sửa đổi. Nó cũng hiển thị số dòng và dòng tóm tắt của tổng số bản ghi(Dữ liệu) đã được cập nhật.
Nói chung, chúng ta có thể nói rằng tùy chọn thống kê được sử dụng để hiển thị
- các file đã sửa đổi,
- Số dòng đã được thêm hoặc bớt
- Dòng tóm tắt về tổng số bản ghi đã thay đổi
- Các dòng đã được thêm hoặc bớt.
Nó sẽ được sử dụng như sau:
git log --stat
Lệnh trên sẽ hiển thị các file đã được sửa đổi. Hãy xem xét đầu ra dưới đây:
Từ kết quả đầu ra ở trên, chúng ta có thể thấy rằng tất cả các commit được liệt kê là các sửa đổi trong kho lưu trữ.
5. Git log P hoặc Patch
Lệnh vá lỗi git log hiển thị các file đã được sửa đổi. Nó cũng hiển thị vị trí của các dòng được thêm, loại bỏ và cập nhật.
Nó sẽ được sử dụng như:
git log --patch
Hoặc là
git log -p
Nói chung, chúng ta có thể nói rằng cờ –patch được sử dụng để hiển thị:
- Các file đã sửa đổi
- Vị trí của các dòng bạn đã thêm hoặc xóa
- Những thay đổi cụ thể đã được thực hiện.
Hãy xem xét đầu ra dưới đây:
Đầu ra ở trên hiển thị các file đã sửa đổi với vị trí của các dòng đã được thêm hoặc bớt.
6. Biểu đồ nhật ký Git
Lệnh git log cho phép xem nhật ký git của bạn dưới dạng đồ thị. Để liệt kê các commit dưới dạng biểu đồ, hãy chạy lệnh git log với tùy chọn –graph. Nó sẽ chạy như sau:
git log --graph
Để làm cho đầu ra cụ thể hơn, bạn có thể kết hợp lệnh này với tùy chọn –oneline. Nó sẽ hoạt động như sau:
git log --graph --oneline
7. Lọc lịch sử commit
Chúng ta có thể lọc đầu ra theo nhu cầu của chúng ta. Đó là một tính năng độc đáo của Git. Chúng ta có thể áp dụng nhiều bộ lọc như số lượng, ngày tháng, tác giả, v.v. trên đầu ra. Mỗi bộ lọc có thông số kỹ thuật của nó. Chúng có thể được sử dụng để thực hiện một số hoạt động điều hướng trên đầu ra.
Chúng ta sẽ tìm hiểu chi tiết từng bộ lọc này sau đây:
Theo số lượng:
Chúng ta có thể giới hạn số lượng commit đầu ra bằng cách sử dụng lệnh git log. Đó là lệnh cụ thể nhất. Lệnh này sẽ loại bỏ sự phức tạp nếu bạn quan tâm đến ít commit hơn.
Để giới hạn đầu ra của nhật ký git, hãy bao gồm tùy chọn – <n>. Nếu chúng ta chỉ muốn ba lần commit cuối cùng, thì chúng ta có thể chuyển đối số -3 trong lệnh git log. Hãy xem xét đầu ra dưới đây:
git log -3
Như chúng ta có thể thấy từ đầu ra ở trên, chúng ta có thể giới hạn đầu ra của git log.
Theo Ngày và Giờ:
Chúng ta có thể lọc đầu ra theo ngày và giờ. Chúng ta phải chuyển đối số – after hoặc -before để chỉ định ngày. Cả hai đối số này đều chấp nhận nhiều định dạng ngày tháng. Nó sẽ chạy như sau:
git log - after = "yy-mm-dd"
Lệnh trên sẽ hiển thị tất cả các commit được thực hiện sau ngày nhất định.
Chúng ta cũng có thể chuyển câu lệnh tham chiếu áp dụng như “hôm qua”, “1 tuần trước”, “21 ngày trước”, v.v. Nó sẽ chạy như sau
git log - After = "21 ngày trước"
Lệnh trên sẽ hiển thị các commit đã được thực hiện 21 ngày trước. Hãy xem xét đầu ra dưới đây:
Chúng ta cũng có thể theo dõi các commit giữa hai ngày. Để theo dõi các commit được tạo giữa hai ngày, hãy chuyển một tham chiếu – trước và – sau ngày đó. Giả sử, chúng ta muốn theo dõi các commit từ “2019-11-01” đến “2019-11-08”. Chúng ta sẽ chạy lệnh như sau:
git log - After = "2020-11-01" --before = "2019-11-08"
Lệnh trên sẽ hiển thị các commit được thực hiện giữa các ngày. Hãy xem xét đầu ra dưới đây:
Kết quả trên hiển thị các commit giữa khoảng thời gian nhất định. Chúng ta có thể sử dụng –since và –until thay vì – after và –before. Bởi vì chúng là từ đồng nghĩa, tương ứng.
Theo Tác giả:
Chúng ta có thể lọc các commit của một người dùng cụ thể. Giả sử, chúng ta muốn liệt kê các commit chỉ được thực hiện bởi một thành viên trong nhóm cụ thể. Chúng ta có thể sử dụng cờ -author để lọc các commit theo tên tác giả. Lệnh này nhận một biểu thức chính quy và trả về danh sách các commit được thực hiện bởi các tác giả phù hợp với mẫu đó. Bạn có thể sử dụng tên chính xác thay vì mẫu chung nào đó. Lệnh này sẽ chạy như sau:
git log --author = "Tên tác giả"
Lệnh trên sẽ hiển thị tất cả các commit của tác giả đã cho. Hãy xem xét đầu ra dưới đây:
Từ kết quả trên, chúng ta có thể thấy rằng tất cả các commit của tác giả ImDwivedi1 đều được liệt kê.
Chúng ta có thể sử dụng một chuỗi thay vì một biểu thức chính quy hoặc tên chính xác. Hãy xem xét tuyên bố dưới đây:
git log --author = "cafedev"
Câu lệnh trên sẽ hiển thị tất cả các commit mà tác giả bao gồm tên, Stephen. Tên tác giả không cần phải khớp chính xác; nó chỉ có cụm từ được chỉ định.
Như chúng ta đã biết, email của tác giả cũng có liên quan đến tên tác giả, vì vậy chúng ta có thể sử dụng email của tác giả làm mẫu hoặc tìm kiếm chính xác. Giả sử, chúng ta muốn theo dõi các commit của các tác giả có dịch vụ email là google. Để làm như vậy, chúng tôi có thể sử dụng các thẻ đại diện là “@ gmail.com”. Hãy xem xét tuyên bố dưới đây:
git log -author = "@gmail.com"
Lệnh trên sẽ hiển thị các commit của các tác giả như đã cho trong mẫu. Hãy xem xét đầu ra dưới đây:
Bằng tin nhắn commit:
Để lọc các commit theo thông báo commit. Chúng ta có thể sử dụng tùy chọn grep và nó sẽ hoạt động như tùy chọn tác giả.
Nó sẽ chạy như sau:
git log --grep = "Thông báo commit."
Chúng ta có thể sử dụng dạng ngắn của thông điệp commit thay vì một thông điệp hoàn chỉnh
Có nhiều tùy chọn lọc khác có sẵn như chúng ta có thể lọc theo tên file, nội dung và hơn thế nữa.
Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.
Tài liệu từ cafedev:
- Full series tự học Git từ cơ bản tới nâng cao tại đây nha.
- Ebook về Git tại đây.
- Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!