Làm thế nào tôi có thể hiển thị tên của các nhánh trong `git log`?


216

Làm thế nào tôi có thể hiển thị tên của các chi nhánh trong đầu ra của git log?

Ví dụ với, git log --graph --alltôi có được một cái nhìn tổng quan đẹp về các cam kết, nhưng bị nhầm lẫn dòng nào là chủ và ví dụ nào là nhánh của tôi.


1
Handily, hiển thị tên của các đầu hoặc thẻ được liên kết dường như đã được thực hiện theo mặc định kể từ một số gitcập nhật gần đây .
gạch dưới

Câu trả lời:


321

Hãy thử tùy chọn trang trí.

git log --graph --all --decorate

Nó chú thích các xác nhận được trỏ đến bởi các thẻ hoặc các nhánh.


42
Với --prettybạn có thể sử dụng %dnơi bạn muốn 'trang trí'.
CB Bailey

4
@noli: Bạn đang mong chờ nó thể hiện điều gì? Không phải tất cả các cam kết là lời khuyên chi nhánh.
CB Bailey

9
@noli git chỉ lưu trữ tên chi nhánh tại lần xác nhận gần đây nhất của chi nhánh (mẹo). Tất cả các cam kết trong lịch sử là bình đẳng và ẩn danh. Nếu bạn muốn các nhánh được đặt tên để mỗi cam kết mang tên nhánh, bạn có thể sử dụng Mercurial.
Sampo Smolander

7
@CharlesBailey: Tôi thích màu sắc của các ref với git log --graph --all --oneline --decorate. Tôi có một bí danh git graphsử dụng --pretty(để hiển thị các nội dung khác, chẳng hạn như tác giả và ngày), nhưng %dkhông cho tôi màu sắc của --decorate. Bây giờ tôi sử dụng màu vàng cho tất cả các ref của mình, bạn có biết làm thế nào tôi có thể để chuỗi --prettycủa mình %dkế thừa màu của --decoratekhông?
Gauthier

3
@Gauthier Nếu bạn muốn có các màu mặc định trong các --prettyđịnh dạng của mình , hãy thêm vào %C(auto)trước phần tử những gì nên được tô màu. ví dụgit log --pretty=format:"%cd %h %cn %s %C(auto)%d"
Radon8472

7

Tôi đang tìm kiếm một cái gì đó tương tự như thế này - nhưng muốn biết chi nhánh nào đã được thực hiện. Hy vọng câu trả lời này cũng sẽ được sử dụng cho những người khác.

Tôi đang điều tra rủi ro với blackboxmã hóa, trong đó một repo và các nhánh / thẻ của nó có thể không khả dụng với hiện tại adminskhi đủ người dùng rời khỏi một dự án và keyringsthư mục không được dựa trên tôn giáo)

Tôi thấy rằng câu trả lời dưới đây rất hữu ích khi keyringsthư mục không được cập nhật từ chủ ...

Về cơ bản thêm --sourcelà những gì tôi cần để hiển thị các nhánh / thẻ. Thêm --name-onlycũng sẽ hiển thị tập tin nào đã thực sự thay đổi.

cd /path/to/repo-that-uses-blackbox-encryption
git log --graph --all --decorate --source --name-only keyrings

Một câu trả lời hữu ích khác: Cách hiển thị nhật ký git với tên chi nhánh


Đối với tôi, --sourcemột mình đưa ra HEADcho tất cả các cam kết. Kết hợp với --all, điều này dường như phân biệt giữa các nhánh khác nhau, nhưng thông tin được hiển thị không phải là điều tôi mong đợi: đối với các cam kết tôi đã thực hiện master, thay vì nhận refs/heads/master, tôi nhận được một số nhánh riêng ( refs/remotes/origin/…). Tôi nghi ngờ rằng việc sáp nhập và / hoặc các chi nhánh mới làm Gitmất thông tin lịch sử.
vinc17

Thay vì --all, tôi có thể lọc trên các nhánh với --branches --remotes=<pattern>, nhưng ngay sau khi hai nhánh được hợp nhất với nhau, Git không còn có thông tin về cái nào có cam kết khi nó được thực hiện.
vinc17

1

Nếu bạn tình cờ sử dụng oh-my-zsh làm thiết bị đầu cuối của mình thì một loạt các bí danh git có sẵn. Tất cả có thể được nhìn thấy tại repo oh-my-zsh / plugins / git của họ . Nếu bạn không sử dụng thiết bị đầu cuối này, thì bạn chỉ có thể lấy các bí danh và dán những cái bạn thích vào môi trường của riêng bạn.

Câu trả lời được chấp nhận trình bày git log --graph --all --decoratelệnh, có sẵn dưới dạng glggabí danh trong oh-my-zsh.

Cá nhân tôi thích glodsbí danh dịch là:

git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short
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.