-----
3.3 Xem lịch sử commit
3.3.1
Git log
Đọc thêm ở đây (tiếng Anh):
Đọc thêm ở đây (tiếng Việt):
https://git-scm.com/book/vi/v1/C%C6%A1-B%E1%BA%A3n-V%E1%BB%81-Git-Xem-L%E1%BB%8Bch-S%E1%BB%AD-Commit
Xem clip (tiếng Việt):
Sau khi thực hiện nhiều commit hoặc lấy một kho chứa (clone)
từ trên mạng về. Để xem những gì đã xảy ra, sử dụng lệnh git log.
Có thể sử dụng kho chứa đơn giản sau để chạy các ví dụ minh
họa,
$ git clone https://github.com/legiacong/langbiang.git
Chạy lệnh git log để xem kết quả (lưu ý kết quả hiển thị có
thể thay đổi),
$ git log
commit 0cf8354bcbd0ad93ebf5bf336f3e49a47a00d8f4 (HEAD ->
master, origin/master, origin/HEAD)
Author: Lê Gia Công <legiacong@gmail.com>
Date: Wed Mar 6 15:47:47
2019 +0700
doi ten tap tin
commit a6c7b4268d5c421c6fe1b6e444bcff8abeb89c19
Author: Lê Gia Công <legiacong@gmail.com>
Date: Wed Mar 6 15:45:27
2019 +0700
doi ten
commit fa9d0684fe9914399e4fe75e1b996df3049176cd
Author: Lê Gia Công <legiacong@gmail.com>
Date: Wed Mar 6 14:25:30
2019 +0700
xóa log
commit 0918f5bf74cb0b08abb2e4aea3bfa84ae8b1eea5
Author: Lê Gia Công <legiacong@gmail.com>
Date: Wed Mar 6 14:23:28
2019 +0700
:
(bấm Enter để xem các nội dung còn lại, bấm q để thoát)
Mặc định, khi không có tham số, lệnh git log sẽ liệt kê các
commit của kho chứa theo thứ tự thời gian, từ mới nhất đến cũ hơn. Thông tin của
mỗi commit gồm: mã băm SHA-1, tên người commit, địa chỉ email, ngày commit và
thông điệp đi kèm.
Lệnh git log có nhiều tham số đi kèm, giúp quan sát thông
tin theo nhiều tiêu chí khác nhau. Phần sau sẽ tìm hiểu một số trường hợp hay sử
dụng.
Tham số -p sẽ hiển thị diff của từng commit, sử dụng thêm
tham số -2 để chỉ hiển thị 2 commit gần nhất.
$ git log -p -2
commit 0cf8354bcbd0ad93ebf5bf336f3e49a47a00d8f4 (HEAD ->
master, origin/master, origin/HEAD)
Author: Lê Gia Công <legiacong@gmail.com>
Date: Wed Mar 6 15:47:47
2019 +0700
doi ten tap tin
diff --git a/taptin1.doc b/taptin2.doc
similarity index 100%
rename from taptin1.doc
rename to taptin2.doc
C:\Users\Maxsys\AppData\Local\Temp/9Gifna_taptin1.doc is not a
Word Document.
C:\Users\Maxsys\AppData\Local\Temp/OZlbYa_taptin2.doc is not a
Word Document.
commit a6c7b4268d5c421c6fe1b6e444bcff8abeb89c19
Author: Lê Gia Công <legiacong@gmail.com>
Date: Wed Mar 6 15:45:27
2019 +0700
doi ten
diff --git a/abc/New Text Document.txt b/abcd/New Text Document.txt
similarity index 100%
rename from abc/New Text Document.txt
rename to abcd/New Text Document.txt
Nhờ tham số diff, giúp bạn xem lướt qua các thay đổi đã được
thực hiện trên kho chứa, ai đã thực hiện, thực hiện vào thời gian nào.
Đối với văn bản lớn, có thể sử dụng thêm tham số --word-diff
để xem thông tin một cách tổng quát.
Ví dụ,
$ git log -p -2 --word-diff
Để xem thống kê tóm tắt, sử dụng tham số --stat.
Ví dụ,
$ git log --stat
Để xem hiển thị
theo nhiều cách khác nhau, sử dụng tham số --pretty.
Ví dụ hiển thị mỗi
commit trên một dòng,
$ git log --pretty=oneline
Để định dạng hiển thị từng thông tin, sử dụng tham số
--pretty=format.
Ví dụ,
$ git log --pretty=format:"%h - %an, %ar : %s"
0cf8354 - Lê Gia Công, 17 hours ago : doi ten tap tin
a6c7b42 - Lê Gia Công, 17 hours ago : doi ten
fa9d068 - Lê Gia Công, 18 hours ago : xóa log
0918f5b - Lê Gia Công, 18 hours ago : them thu muc log
c0b9a94 - Lê Gia Công, 18 hours ago : them thu muc log
79e4308 - Lê Gia Công, 19 hours ago : da xoa thumuc
f195a19 - Lê Gia Công, 19 hours ago : them thumuc
Bảng sau là một số giá trị của tham số format,
%H: mã băm
commit
|
%h: mã băm
commit rút gọn
|
%T: băm hiển thị
dạng cây
|
%t: băm hiển thị
dạng cây rút gọn
|
%P: các mã băm
gốc
|
%p: các mã băm
gốc rút gọn
|
%an: tên tác giả
|
%ae: email tác
giả
|
%ad: ngày
commit của tác giả
|
%ar: thời gian
đã commit của tác giả (tính đến hiện tại)
|
%cn: tên người
commit
|
%ce: email người
commit
|
%cd: ngày
commit
|
%cr: thời gian
đã commit (tính đến hiện tại)
|
%s: thông điệp
gửi kèm commit
|
Tác giả (author) là người tạo ra bản vá (patch) đầu tiên,
người commit là người cuối cùng áp dụng bản vá đó.
Để hiện thị các nhánh và lịch sử tích hợp, sử dụng thêm tham
số --graph kết hợp với oneline hoặc format. Ví dụ,
$ git log --pretty=format:"%h %s" --graph
Bảng sau tổng hợp một số kiểu định dạng xuất hữu ích của git
log,
Tùy chọn
|
Mô tả
|
-p
|
Hiển thị bản vá
của mỗi commit
|
--word-diff
|
Hiển thị bản vá
ở định dạng rút gọn
|
--stat
|
Hiển thị thống
kê của các tập tin được chỉnh sửa trong mỗi commit
|
--shortstat
|
Hiển thị ngắn gọn
thống kê của các tập tin được chỉnh sửa trong mỗi commit
|
--name-only
|
Hiển thị danh
sách các tập tin bị thay đổi (sau thông tin commit)
|
--name-status
|
Hiển thị danh
sách các tập tin bị ảnh hưởng như thêm/sửa/xóa thông tin
|
--abbrev-commit
|
Hiển thị mã băm
(SHA-1) ở dạng rút gọn
|
--relative-date
|
Hiển thị khoảng
thời gian từ lúc commit đến thời điểm hiện tại
|
--graph
|
Hiển thị thông
tin về rẽ nhánh, trộn nhánh và các thông tin khác
|
--pretty
|
Hiển thị thông
tin theo định dạng tùy chỉnh (oneline, full, fuller, format)
|
--oneline
|
Dạng rút gọn của
--pretty=oneline --abbrev-commit
|
Lab 16. Các chế độ xem lịch sử
commit.
Sử dụng repo sau,
$ git clone https://github.com/schacon/simplegit-progit
Thực hiện xem lịch sử commit với các tham số sau, ghi lại kết
quả của mỗi trường hợp.
Lệnh
|
Tham số
|
Tham số phụ
|
$ git log
|
||
$ git log
|
-p
|
-2
|
$ git log
|
-p
|
-2 --word-diff
|
$ git log
|
-- stat
|
|
$ git log
|
--
pretty=oneline
-- pretty=short
-- pretty=full
--
pretty=fuller
|
|
$ git log
|
--shortstat
|
|
$ git log
|
--name-only
|
|
$ git log
|
--name-status
|
|
$ git log
|
--abbrev-commit
|
|
$ git log
|
--relative-date
|
3.3.2
Giới hạn thông tin xuất
Mặc định, lệnh git log sẽ xuất thông tin của các commit theo
từng trang, theo thứ tự từ mới nhất đến cũ hơn. Ngoài ra, bạn cũng có thể sử dụng
thêm các tham số khác, để giới hạn các commit được hiển thị.
Sử dụng tham số -n, với n là một số tự nhiên, để xác định số
commit được hiển thị.
Ví dụ sau sẽ hiển thị 3 commit mới nhất,
$ git log -3
Sử dụng tham số --since hoặc --until để hiển thị các commit
trong một khoảng thời gian cụ thể.
Ví dụ sau sẽ hiển thị các commit trong 2 ngày gần nhất (tính
từ thời điểm hiện tại),
$ git log --since=2.days
Ví dụ sau sẽ hiển thị các commit cho tới ngày 8 tháng 3 năm
2019,
$ git log --until="2019-3-8"
Bảng dưới đây tổng hợp một vài tham số để tiện sử dụng,
Tham số
|
Mô tả
|
- (n)
|
Hiển thị n
commit mới nhất
|
--since, --after
|
Chỉ hiển thị
các commit được thực hiện sau ngày cụ thể
|
--until,
--before
|
Chỉ hiển thị
các commit được thực hiện trước ngày cụ thể
|
--author
|
Hiển thị các
commit theo tên tác giả
|
--commiter
|
Hiển thị các
commit theo tên người commit
|
--grep
|
Hiển thị các
commit dựa vào nội dung thông điệp khi commit (message)
Ví dụ: git log
--grep="ten"
|
-S
|
Hiển thị các
commit dựa vào nội dung đã bị thay đổi (thêm/xóa) trong các tập tin
Ví dụ: $ git
log -Sword
|
Lab 17. Lọc các commit theo yêu cầu.
Sử dụng repo sau,
$ git clone https://github.com/schacon/simplegit-progit
Thực hiện lọc các commit theo các yêu cầu sau, ghi lại thông
tin kết quả.
Tham số
|
Lệnh & Kết quả
|
- (n)
|
|
--since, --after
|
|
--until,
--before
|
|
--author
|
|
--commiter
|
|
--grep
|
|
-S
|
Khi cài đặt Git, sẽ có sẵn một chương trình cho phép bạn
quan sát lịch sử commit một cách trực quan bằng giao diện đồ họa. Trong cửa sổ Git Bash, gõ lệnh gitk
để trải nghiệm.
</////06
-----------
Cập nhật [08/10/2019]
-----------
Xem thêm: Làm web (07) - Git: hủy bỏ & remote repo