2012-02-24 37 views
57

Tôi có một bí danh Git mà mở rộng để:Git hiển thị tất cả các chi nhánh (nhưng không phải ẩn nấp) trong nhật ký

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

Theo man git log có một vài tùy chọn đáng ngờ: --not--branches; nhưng tôi không thể làm cho nó hoạt động đúng.

Tôi nên chỉnh sửa như thế nào để ẩn các dấu gạch ngang?


FYI: theo accepted questioncomment.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 

Trả lời

79

Thay vì làm --all và sau đó cố gắng để lọc ra ẩn nấp, đừng bao giờ bao gồm họ ở nơi đầu tiên:

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

vấn đề chính phát sinh fr om cố gắng lọc chúng ra sau đó là nếu stash là cam kết mới nhất trên nhánh đó (bởi vì mặc dù nó không phải là head của chi nhánh, nó vẫn là hậu duệ mới 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à những gì bạn muốn.

+2

Tuyệt vời! Tôi sẽ thêm '--tags' để hoàn thành. – cYrus

+0

Tôi nghi ngờ '--tags' là thừa, vì không có thẻ nào là hậu duệ của' đầu' của nhánh hoặc từ xa, mặc dù tôi chưa xác minh điều này. –

+3

Chỉ cần thử: '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ị mà không có '--tags'. – cYrus

2

Lưu ý rằng Andrew's answer sẽ không làm việc cho ẩn StGit1.) chi nhánh <branch>.stgit (từ StGit phiên bản 0,15) mà nếu không xả rác đầu ra làm cho nó không sử dụng được.

Hiện nay tôi sử dụng các giải pháp sau đây:

$ 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 Quilt/mq - chức năng giống như Git (tức là đẩy/popping các bản vá lỗi đến/từ một ngăn xếp).

1

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 hình thức mà không hiển thị các stash:

  • 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 toàn bộ lịch sử

Từ hướng dẫn:

--exclude = < glob mẫu >

Không bao gồm refs phù hợp mà tiếp theo --all, --branches, --tags, --remotes hoặc --glob sẽ cân nhắc.

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