Commandlinefu có 2 mệnh đề thú vị:
for k in `git branch | perl -pe s/^..//`; do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1`\\t$k; done | sort -r
hoặc là:
for k in `git branch | sed s/^..//`; do echo -e `git log -1 --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k --`\\t"$k";done | sort
Đó là cho các nhánh cục bộ, theo cú pháp Unix. Sử dụng git branch -r
, bạn có thể hiển thị tương tự các chi nhánh từ xa:
for k in `git branch -r | perl -pe 's/^..(.*?)( ->.*)?$/\1/'`; do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1`\\t$k; done | sort -r
Michael Forrest đề cập trong các ý kiến rằng zsh yêu cầu thoát cho sed
biểu thức:
for k in git branch | perl -pe s\/\^\.\.\/\/; do echo -e git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1\\t$k; done | sort -r
liên tục thêm vào trong các ý kiến :
Nếu bạn muốn thêm nó, zshrc của bạn, lối thoát sau là cần thiết.
alias gbage='for k in `git branch -r | perl -pe '\''s/^..(.*?)( ->.*)?$/\1/'\''`; do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | head -n 1`\\t$k; done | sort -r'
Trong nhiều dòng:
alias gbage='for k in `git branch -r | \
perl -pe '\''s/^..(.*?)( ->.*)?$/\1/'\''`; \
do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k -- | \
head -n 1`\\t$k; done | sort -r'
Lưu ý: câu trả lời của n8tr , dựa trên là sạch hơn. Và nhanh hơn .
Xem thêm " Tên chỉ tùy chọn cho ?git for-each-ref refs/heads
git branch --list
"
Tổng quát hơn, tripleee nhắc nhở chúng ta trong các ý kiến :
- Thích
$(command substitution)
cú pháp hiện đại hơn cú pháp backtick lỗi thời.
(Tôi đã minh họa điểm đó vào năm 2014 với " Sự khác biệt giữa $(command)
và `command`
trong lập trình shell là gì? ")