Git hiển thị tất cả các nhánh (nhưng không hiển thị chuỗi) trong nhật ký


84

Tôi có bí danh Git mở rộng thành:

git log --graph --oneline --all --decorate

Theo man git logđó, có một số lựa chọn đáng ngờ: --not--branches; nhưng tôi không thể làm cho nó hoạt động bình thường.

Làm cách nào để chỉnh sửa điều đó để ẩn các kho lưu trữ


FYI : theo câu hỏi được chấp nhậnnhận xét,.gitconfig bí danh của tôi bây giờ trông như thế này:

[alias]
    l = log --branches --remotes --tags --graph --oneline --decorate --notes HEAD

Câu trả lời:


125

Thay vì làm --allvà sau đó cố gắng lọc ra các kho, đừng bao giờ đưa chúng vào ngay từ đầu:

git log --branches --remotes --tags --graph --oneline --decorate

Vấn đề chính phát sinh từ việc cố gắng lọc chúng ra sau đó là nếu kho lưu trữ là cam kết mới nhất trên nhánh đó (vì mặc dù nó không phải headlà nhánh của nhánh, nó vẫn là hậu duệ gần đây nhất của nó), nó thực sự có thể lọc ra toàn bộ nhánh từ nhật ký, đó không phải là điều bạn muốn.


2
Tuyệt quá! Tôi sẽ bổ sung --tagscho sự hoàn chỉnh.
cYrus

Tôi nghi ngờ --tagslà thừa, vì không có thẻ nào là con của headnhánh hoặc từ xa, mặc dù tôi chưa xác minh điều này.
Andrew Marshall

3
Chỉ cần thử điều này git checkout -b test:; đã thêm một cam kết; git tag foo; git checkout master; git branch -D test. Thẻ ở đó nhưng nó sẽ không được hiển thị nếu không có --tags.
cYrus

2
Một bổ sung nhỏ - bạn nên thêm HEADvào cuối. Ngược lại, nếu bạn đang ở chế độ HEAD tách rời và không có tham chiếu nào khác trỏ đến cam kết HEAD, bạn sẽ không thấy nó trong biểu đồ.
mziwisky

6

Bí danh của tôi:

[alias]
    l = log --oneline --decorate --graph --exclude=refs/stash

Trong trường hợp này, bạn sẽ có thể sử dụng các biểu mẫu này mà không cần hiển thị kho:

  • git l cho chi nhánh hiện tại
  • git l feature234 cho một chi nhánh cụ thể
  • git l --all cho lịch sử tổng thể

Từ sách hướng dẫn:

--exclude = <hình cầu>

Không bao gồm các tham chiếu khớp với --all, --braches, --tags, --remotes hoặc --glob nếu không sẽ xem xét.


4
Lưu ý rằng thứ tự của các tham số rất quan trọng: --all --exclude=refs/stashsẽ vẫn bao gồm kho lưu trữ, trong khi --exclude=refs/stash --allsẽ loại trừ nó một cách chính xác.
Mikhail Burshteyn

4

Lưu ý rằng câu trả lời của Andrew sẽ không hoạt động khi ẩn các nhánh StGit 1.)<branch>.stgit (từ phiên bản StGit 0.15) mà ngược lại, đầu ra sẽ xả ra khiến nó không sử dụng được.

Hiện tại tôi sử dụng giải pháp sau:

$ git log --graph --oneline --decorate \
  $(git for-each-ref --format="%(refname)" refs/heads/ refs/remotes/ |
    grep -v "\.stgit$")

1.) StGit (" St acked Git ") cung cấp chức năng giống như Quilt / mq cho Git (tức là đẩy / bật các bản vá đến / từ một ngăn xếp).


Cân nhắc sử dụng --exclude. Giống như:git log --graph --exclude=refs/heads/*.stgit --exclude=refs/patches/* --exclude=refs/stash --all
gavenkoa
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.