Khi sử dụng git log
, làm cách nào tôi có thể lọc theo người dùng để tôi chỉ thấy các cam kết từ người dùng đó?
Khi sử dụng git log
, làm cách nào tôi có thể lọc theo người dùng để tôi chỉ thấy các cam kết từ người dùng đó?
Câu trả lời:
Điều này hoạt động cho cả hai git log
và gitk
- 2 cách phổ biến nhất để xem lịch sử.
Bạn không cần phải sử dụng toàn bộ tên:
git log --author="Jon"
sẽ khớp với một cam kết được thực hiện bởi "Jonathan Smith"
git log --author=Jon
và
git log --author=Smith
cũng sẽ làm việc Các trích dẫn là tùy chọn nếu bạn không cần bất kỳ khoảng trắng.
Thêm --all
nếu bạn có ý định tìm kiếm tất cả các chi nhánh và không chỉ tổ tiên của cam kết hiện tại trong repo của bạn.
Bạn cũng có thể dễ dàng kết hợp trên nhiều tác giả vì regex là cơ chế cơ bản cho bộ lọc này. Vì vậy, để liệt kê các cam kết của Jonathan hoặc Adam, bạn có thể làm điều này:
git log --author="\(Adam\)\|\(Jon\)"
Để loại trừ các cam kết của một tác giả cụ thể hoặc một nhóm tác giả sử dụng các biểu thức chính quy như đã lưu ý trong câu hỏi này , bạn có thể sử dụng giao diện phủ định kết hợp với công --perl-regexp
tắc:
git log --author='^(?!Adam|Jon).*$' --perl-regexp
Ngoài ra, bạn có thể loại trừ các xác nhận do Adam ủy quyền bằng cách sử dụng bash
và đường ống:
git log --format='%H %an' |
grep -v Adam |
cut -d ' ' -f1 |
xargs -n1 git log -1
Nếu bạn muốn loại trừ các cam kết được cam kết (nhưng không nhất thiết phải là tác giả) của Adam, hãy thay thế %an
bằng %cn
. Thông tin chi tiết về điều này có trong bài đăng trên blog của tôi ở đây: http://dymitruk.com/blog/2012/07/18/filtering-by- Author-name /
gitk
các phụ huynh cam kết từ các tác giả khác? (Chúng được hiển thị với các vòng tròn màu trắng.) Ngược lại, git log --graph
không hiển thị các cam kết cha mẹ; nó chỉ hiển thị các cam kết của tác giả nhất định. Tôi rất thích nhìn thấy đầu ra tương tự trong gitk
. (Đã kiểm tra Tùy chọn và Chế độ xem Chỉnh sửa - không thể tìm thấy bất cứ điều gì hữu ích.)
git log --author="that user"
Trên github cũng có một cách bí mật ...
Bạn có thể lọc các xác nhận của tác giả trong chế độ xem cam kết bằng cách nối thêm param ?author=github_handle
. Ví dụ: liên kết https://github.com/dynjs/dynjs/commits/master?master=jingweno hiển thị danh sách các cam kết cho dự án Dynjs
git help log
cung cấp cho bạn các trang web của nhật ký git. Tìm kiếm "tác giả" ở đó bằng cách nhấn / và sau đó nhập "tác giả", theo sau là Enter. Nhập "n" một vài lần để đến phần có liên quan, điều này cho thấy:
git log --author="username"
như đã đề xuất.
Lưu ý rằng điều này sẽ cung cấp cho bạn tác giả của các cam kết, nhưng trong Git, tác giả có thể là một người khác với committer (ví dụ: trong nhân Linux, nếu bạn gửi một bản vá như một người dùng thông thường, nó có thể được cam kết bởi một người dùng quản trị khác .) Xem sự khác biệt giữa tác giả và người đi làm trong Git? để biết thêm chi tiết)
Hầu hết thời gian, những gì một người đề cập đến như người dùng là cả người đi làm và tác giả.
Để biết thêm chi tiết - (Ở đây %an
đề cập đến tác giả)
Dùng cái này :-
git log --author="username" --pretty=format:"%h - %an, %ar : %s"
%ae
thay vì %an
(đã đặt tên.)
--author
thực sự tìm kiếm theo tên tác giả và không phải tên committer. Tôi sẽ đổi "username"
thành tác giả
cat | git log --author="authorName" > author_commits_details.txt
Điều này cung cấp cho cam kết của bạn ở định dạng văn bản.
cat |
gì?
Nếu bạn muốn lọc các cam kết của riêng bạn:
git log --author="<$(git config user.email)>"
dùng thử công cụ này https://github.com/kamranahmedse/git-standup
```bash
$ git standup [-a <author name>]
[-w <weekstart-weekend>]
[-m <max-dir-depth>]
[-f]
[-L]
[-d <days-ago>]
[-D <date-format>]
[-g]
[-h]
```
Dưới đây là mô tả cho mỗi cờ
- `-a` - Specify author to restrict search to (name or email)
- `-w` - Specify weekday range to limit search to (e.g. `git standup -w SUN-THU`)
- `-m` - Specify the depth of recursive directory search
- `-L` - Toggle inclusion of symbolic links in recursive directory search
- `-d` - Specify the number of days back to include
- `-D` - Specify the date format for "git log" (default: relative)
- `-h` - Display the help screen
- `-g` - Show if commit is GPG signed or not
- `-f` - Fetch the latest commits beforehand
Hiển thị n số nhật ký cho người dùng x màu bằng cách thêm đoạn mã nhỏ này vào tệp .bashrc của bạn.
gitlog() {
if [ "$1" ] && [ "$2" ]; then
git log --pretty=format:"%h%x09 %C(cyan)%an%x09 %Creset%ad%x09 %Cgreen%s" --date-order -n "$1" --author="$2"
elif [ "$1" ]; then
git log --pretty=format:"%h%x09 %C(cyan)%an%x09 %Creset%ad%x09 %Cgreen%s" --date-order -n "$1"
else
git log --pretty=format:"%h%x09 %C(cyan)%an%x09 %Creset%ad%x09 %Cgreen%s" --date-order
fi
}
alias l=gitlog
Để hiển thị 10 cam kết cuối cùng của Frank:
l 10 frank
Để hiển thị 20 cam kết cuối cùng của bất kỳ ai:
l 20
Nếu sử dụng GitHub:
nó sẽ hiển thị danh sách ở định dạng dưới đây
branch_x: < comment>
author_name committed 2 days ago
Bạn có thể sử dụng = hoặc "dấu cách". Ví dụ sau hai lệnh trả về giống nhau
git log --author="Developer1"
git log --author "Developer1"
Trường hợp của tôi: Tôi đang sử dụng cây nguồn, tôi đã làm theo các bước sau:
CRL+3
Mặc dù, có rất nhiều câu trả lời hữu ích. Trong khi đó, chỉ để thêm một cách khác cho nó. Bạn cũng có thể dùng
git shortlog --author="<author name>" --format="%h %s"
Nó sẽ hiển thị đầu ra theo cách được nhóm:
<Author Name> (5):
4da3975f dependencies upgraded
49172445 runtime dependencies resolved
bff3e127 user-service, kratos, and guava dependencies upgraded
414b6f1e dropwizard :- service, rmq and db-sharding depedencies upgraded
a96af8d3 older dependecies removed
Ở đây, tổng cộng 5 cam kết được thực hiện bởi <Author Name>
chi nhánh hiện tại. Trong khi đó, bạn cũng có thể sử dụng --all
để thực thi tìm kiếm ở mọi nơi (tất cả các chi nhánh) trong kho git.
Một lưu ý: git trong nội bộ cố gắng khớp một đầu vào <author name>
với tên và email của tác giả trong cơ sở dữ liệu git. Nó là trường hợp nhạy cảm .
github
?