commandlinefu memiliki 2 proposisi menarik:
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
atau:
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
Itu untuk cabang lokal, dalam sintaksis Unix. Dengan menggunakan git branch -r
, Anda juga dapat menampilkan cabang jarak jauh:
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 menyebutkan dalam komentar bahwa zsh membutuhkan pelarian untuk sed
ekspresi:
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
kontinuity menambahkan dalam komentar :
Jika Anda ingin menambahkannya zshrc Anda maka dibutuhkan escape berikut.
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'
Dalam banyak baris:
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'
Catatan: n8tr 's jawaban , berdasarkan git for-each-ref refs/heads
lebih bersih. Dan lebih cepat .
Lihat juga " Opsi hanya nama untuk git branch --list
? "
Secara lebih umum, tripleee mengingatkan kita dalam komentar :
- Lebih suka
$(command substitution)
sintaksis modern daripada sintaks backtick usang.
(Saya menggambarkan titik itu pada tahun 2014 dengan " Apa perbedaan antara $(command)
dan `command`
dalam pemrograman shell? ")
- Jangan membaca baris dengan
for
.
- Mungkin beralih ke
git for-each-ref refs/remote
untuk mendapatkan nama cabang jarak jauh dalam format yang dapat dibaca mesin