Xem Git log và tìm kiếm kết quả trên git log
Git là công cụ rất tuyệt vời để quản lí phiên bản code. Nó giúp các lập trình viên trong dự án có thể làm việc với nhau một cách thống nhất, đồng bộ và an toàn. Nếu bạn lỡ tay làm gì ảnh hưởng đến mã nguồn của mình, bạn vẫn có thể lấy lại được một cách khá dễ dàng. Trong quá trình làm dự án, chúng ...
Git là công cụ rất tuyệt vời để quản lí phiên bản code. Nó giúp các lập trình viên trong dự án có thể làm việc với nhau một cách thống nhất, đồng bộ và an toàn. Nếu bạn lỡ tay làm gì ảnh hưởng đến mã nguồn của mình, bạn vẫn có thể lấy lại được một cách khá dễ dàng. Trong quá trình làm dự án, chúng ta cũng thường xuyên phải xem git log cũng như tìm kiếm một số từ khóa (xem đã được ai thay đổi, thay đổi những gì...). Vì vậy việc nắm được một số command line cơ bản sẽ giúp ích cho các bạn trong quá trình làm việc. Bài viết hôm nay mình xin chia sẻ với các bạn về một số lệnh như thế.
I.Xem git log Với lập trình viên chúng ta, đa số sử dụng console trên môi trường Linux, một số câu lệnh sau cho phép các bạn xem lại log git một cách dễ dàng. git log : Hiển thị ra 1 list các commit của bạn theo thứ tự thời gian gần nhất (các commit mới nhất thì ở trên cùng). git log --reverse: Hiển thị ra 1 list các commit của bạn theo thứ tự ngược lại (các commit đầu tiên ở trên cùng). git log --oneline: Xem log với tham số one line, các commit của bạn được hiển thị rút gọn thành 2 cột với mã SHA, đây cũng là câu lệnh xem git log thường được dùng do ngắn gọn nhất. git log -p: Tham số -p hiển thị chi tiết thay đổi, đường dẫn của mỗi lần commit code khi bạn sửa hoặc xóa code. git log -p <filename>: Thêm tham số file name sẽ chỉ hiển thị thay đổi với riêng file nào đó, tất nhiên bạn cũng có thể dùng kết hợp với --oneline để rút gọn bớt thông tin. Nếu không muốn xem chi tiết thay đổi trên từng commit, bạn có thể bỏ tham số -p đi git log -p -S <query>: Sử dụng -S để search các thông tin liên quan, lọc bỏ các dữ liệu trong các commit không cần thiết. Ngoài ra, git log -S cũng có thể giúp bạnxem dòng code trong file code là của ai, trong commit nào, cách dùng như sau: git log -S <line number> -- <path to file>
git log -p --grep <query>: Với tham số --grep, git sẽ search trên các message của các commit giới hạn bởi tham số query. Nếu query có dấu cách, bạn phải cho vào trong dấu nháy kép. Ví dụ bên dưới là câu lệnh grep từ khóa "negative" git log <commit1>..<commit2>: So sánh sự khác nhau giữa 2 commit 1 và 2, bạn có thể dùng với cả code SHA của các commit (Ví dụ: git log 660bfa2..922b5d2 hoặc thay bằng tên branch). git log --stat: Thêm một danh sách ngắn các tập tin đã được thay đổi trong mỗi commit, với một số dòng đã được thêm vào hoặc xóa đi. git log --no-merges: Chỉ hiển thị các commit chưa được merge, sử dụng --merge để hiển thị riêng các commit đã được merge. git log --oneline --graph : Xem biểu đồ các branch được merge và checkout như thế nào, ví dụ như sau:
Trong một số trường hợp, để thống kê số commit trên branch của từng cá nhân trong dự án, các bạn có thể sử dụng 1 số câu lệnh sau:
git shortlog <branch> --numbered --summary: Hiển thị số commit của từng người, ví dụ sau trên branch master của gem carrierwave, 1 gem upload ảnh khá nổi tiếng. Sử dụng gawk và modify câu lệnh một chút, các bạn có thể xem được số dòng code đã thêm vào, số dòng code đã xóa đi trong dự án của một thành viên: git log --author="<author>" --pretty=tformat: --numstat | gawk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s ", add, subs, loc }' - Ví dụ sau là đóng góp của thành viên Jonas Nicklas trong gem carrier wave:
Nếu những câu lệnh trên vẫn khó nhìn hoặc chưa cung cấp đủ thông tin các bạn cần, các bạn có thể cài đặt package git-quick-stat, package khá dễ sử dụng và hiển thị đẹp mắt tại địa chỉ :https://github.com/arzzen/git-quick-stats.
II. Tìm kiếm trên output của git log.
Sau khi thực hiện git log, việc tìm kiếm trên các trang output cũng khá quan trong. Một số phím cơ bản có thể giúp ích cho bạn như sau: <spacebar>: Gõ dấu cách để chuyển sang trang tiếp theo. b: Quay lại page trước đó. /<term>: Tìm kiếm trên output với điều kiện truyền vào (ví dụ tìm từ khóa "/user_name"). Từ khóa gần nhất tìm được theo thứ tự sẽ xuất hiện trên đầu trang và được hightlight. ?<term>: Tìm kiếm với từ khóa truyền vào nhưng kết quả đảo ngược lại. Nó thường dùng trong trường hợp bạn đã xem qua một nửa số kết quả đầu tiên rồi, và lần tìm này bạn xem ngược lại để tìm trong số kết quả còn lại. n: Chuyển đến từ khóa ngay tiếp theo (sử dụng cùng với lệnh / hoặc ? bên trên). N: Chuyền ngược lại từ khóa trước đó. q: Quit page và quay trở lại shell để thao tác.
Nếu các bạn đang sử dụng sublime text để lập trình, các bạn có thể cài package git, nó sẽ hỗ trợ khá nhiều trong quá trình code như hiển thị dòng thêm vào, dòng xóa đi, code đã commit chưa hay blame xem dòng code được viết bởi ai... Hy vọng những chia sẻ trên có thể giúp ích cho các bạn trong quá trình làm việc.