nhật ký git của một phiên bản duy nhất


181

Tôi có một cam kết c. Tôi muốn nhận được các thay đổi của cam kết chính xác đó và không có ai khác. Có cách nào đơn giản hơn git log -p c^..cđể làm điều đó?

Câu trả lời:



60

Câu trả lời của Michal Trybus là tốt nhất cho sự đơn giản. Nhưng nếu bạn không muốn khác biệt trong đầu ra của mình, bạn luôn có thể làm một cái gì đó như:

git log -1 -U c

Điều đó sẽ cung cấp cho bạn nhật ký cam kết, và sau đó bạn sẽ có toàn quyền kiểm soát tất cả các tùy chọn ghi nhật ký git cho mục đích tự động hóa của bạn. Trong trường hợp của bạn, bạn nói rằng bạn muốn thiết lập thay đổi. Cách dễ đọc nhất của con người để thực hiện điều đó sẽ là:

git log --name-status --diff-filter="[A|C|D|M|R|T]" -1 -U c

Hoặc, nếu bạn đang sử dụng phiên bản git lớn hơn 1.8.X thì đó là:

git log --name-status --diff-filter="ACDMRT" -1 -U c

Điều này sẽ cho bạn kết quả tương tự như:

commit {c}
Author: zedoo <zedoo@stackoverflow.com>
Date: Thu Aug 2 {time-stamp}

   {short description}
D    zedoo/foo.py
A    zedoo/bar.py

Tất nhiên, bạn có thể lọc bất kỳ sự kiện nào bạn thấy phù hợp và định dạng trả về như bạn muốn thông qua các lệnh git-log truyền thống được ghi lại rõ ràng ở đây .


14
Nếu bạn không muốn khác biệt, hãy làm git show --name-only <sha1>!
dbn

16
Nếu bạn không muốn khác biệt, sử dụng git show -s <commit>.
moeffju

3
Không gì -1làm gì? Nó được ghi nhận ở đâu?
alex

1
@alex Xem đầu ra của git help logphần "Giới hạn cam kết". Hoặc xem git-scm.com/book/en/v2/ mài -<number> giới hạn số lượng cam kết đầu ra.
LarsH

14

git log -p c -1 làm điều đó


4
-1 làm gì? Nó được ghi nhận ở đâu?
alex

4
@alex: "-1" giới hạn số lượng mục được hiển thị ở số đã cho, đó là viết tắt -n 1hoặc hoặc --max-number=1được ghi lại ở đây .
derpasaurus

0

Bạn có thể sử dụng để lọc thay đổi theo mô tả của cam kết:

git log --grep='part_of_description' -p

trong đó git log --grep='part_of_description'chọn các xác nhận có chứa 'part_of_description' và -phiển thị các thay đổi của từng cam kết

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.