2012-04-05 39 views
23
  1. Với this answer đến một câu hỏi khác, và
  2. cho rằng các trang người đàn ông cho cả git-loggit-whatchanged nói rằng họ kéo từ git-rev-list ...

... những gì sau đó là sự khác biệt giữa hai lệnh ? Tại sao bận tâm có cả hai người trong số họ?Sự khác biệt giữa git-log và git-whatchanged?

+2

Cam kết gần đây (tháng 8 năm 2013) bây giờ làm rõ sự khác biệt giữa hai lệnh và khuyến khích chỉ sử dụng 'git log'. Xem [câu trả lời của tôi dưới đây] (http://stackoverflow.com/a/18585297/6309) – VonC

Trả lời

19

Các commit 52f425e1 (tháng Tám, ngày 30 năm 2013) đề cập đến:

Khuyến khích người dùng mới sử dụng 'log' để thay thế. Những ngày này, các lệnh này được thống nhất và chỉ có các giá trị mặc định khác nhau.

'git log' chỉ cho phép bạn xem các thông điệp tường trình và không có sự khác biệt khi được thêm vào đầu tháng 6 năm 2005. Chỉ vào đầu tháng 4 năm 2006, lệnh đã học để có các tùy chọn khác.
Do đó, người dùng có xu hướng sử dụng 'whatchanged' đã tồn tại từ giữa tháng 5 năm 2005 và các tùy chọn khác được hỗ trợ.


Đó là những gì các new version of the man page for git whatchanged sẽ nói ngay:

người dùng mới được khuyến khích sử dụng git log để thay thế. Lệnh whatchanged về bản chất giống như git log nhưng mặc định hiển thị đầu ra diff định dạng thô và bỏ qua các hợp nhất.

Lệnh này được lưu giữ chủ yếu vì lý do lịch sử; ngón tay của nhiều người đã học Git lâu trước khi git log được phát minh bằng cách đọc danh sách gửi thư của hạt nhân Linux được đào tạo để nhập nó.

+2

Cảm ơn bạn đã quay lại và thêm điều đó. Nói chung, tôi nghĩ rằng toàn bộ cộng đồng git khá biết ơn đối với bạn, Charles Bailey, Jakub Narębski, và bất cứ ai khác đặt nhiều thời gian này vào các câu hỏi git về SO :). –

13

Ở dạng đơn giản nhất, 'git log' hiển thị từng cam kết (sha, author, date, message) trong khi 'git whatchanged' hiển thị commit cộng với các tệp đã thay đổi. Ví dụ:

$ git log 
commit db9f525674443314a9822a6bd6c3acce49c8f8d6 
Author: ... 
Date: Wed Apr 4 22:55:33 2012 -0700 

Add more 

commit eed0b7aa3cad5d985b5f1d52f3c0605339c119a1 
Author: ... 
Date: Tue Apr 3 20:36:04 2012 -0700 

del bing/one.c 

nhưng đối với whatchanged:

$ git whatchanged 
commit db9f525674443314a9822a6bd6c3acce49c8f8d6 
Author: ... 
Date: Wed Apr 4 22:55:33 2012 -0700 

Add more 

:100644 100644 f2e4113... d415016... M bar.c 

commit eed0b7aa3cad5d985b5f1d52f3c0605339c119a1 
Author: ... 
Date: Tue Apr 3 20:36:04 2012 -0700 

del bing/one.c 

:100644 000000 e69de29... 0000000... D bing/one.c 

Rất nhiều tùy chọn tồn tại để thay đổi đầu ra của mỗi lệnh. Ví dụ 'git whatchanged -p' cho thấy những thay đổi trong dạng diff/patch.

+0

Cảm ơn bạn. Có bất kỳ chức năng một lệnh có thể làm điều đó chỉ đơn giản là không thể? –

+2

Có vẻ như câu trả lời là 'không'. Nhìn vào mã nguồn git cho thấy rằng hai giống hệt với các tùy chọn mặc định. 'git log' sẽ 'luôn hiển thị tiêu đề'; 'git whatchanged' sẽ luôn luôn 1) hiển thị đầu ra khác, 2) đơn giản hóa lịch sử và 3) sử dụng định dạng khác biệt theo mặc định. – GoZoner

+2

'git-whatchanged' không bao gồm hợp nhất theo mặc định trong khi' git-log' thực hiện. Tôi đã không tìm thấy các tùy chọn, nếu có bất kỳ, để có được 'git-log' để xuất danh sách các tập tin đã thay đổi theo cùng cách với' git-whatchanged'. –

3

Tôi hoàn toàn không đồng ý. Bạn có thể xem các tệp đã hợp nhất đã thay đổi với log không?

tôi không tìm thấy chức năng này và rất hữu ích cho biết khi một tập tin đã được sáp nhập trong một số ngành, ví dụ:

file c.c trong branch1 có ngày cam kết từ 2012/01/01, nếu bạn làm hợp nhất với branch2 và sau đó muốn thực hiện theo ngày cam kết đó được giới thiệu trong branch2, có thể git log trợ giúp không? Nếu bạn có thao tác trộn bạn có thể tìm kiếm trong chúng với git whatchanged -m sha1

Các vấn đề liên quan