Versi git branch --list
sebagian besar berfungsi, tetapi lambat dan rumit. Meskipun ini dapat dengan mudah diperbaiki di git itu sendiri, setiap tambalan yang mencoba meningkatkan antarmuka pengguna ditolak secara de facto.
git branch-list
Eksternal adalah solusinya.
Mengapa git branch-list
lebih baik?
git branch --list
Katakanlah Anda memiliki cabang master
yang melacak cabang jarak jauh, tetapi tidak selalu terkini (kami akan menggunakan repositori Linux).
Dalam hal ini git branch
akan menunjukkan ini:
* master
Ini tidak memberikan banyak informasi. Jika Anda menggunakan opsi --verbose
, Anda mendapatkan:
* master 9f4ad9e425a1 [behind 16592] Linux 5.12
Oke, kami berada di belakang pada tahun 16592 berkomitmen, tetapi di balik apa? Kita bisa menebak dari judul komit, tetapi tidak terlalu jelas.
Jika kami menggunakan --verbose --verbose
kami mendapatkan:
* master 9f4ad9e425a1 [origin/master: behind 16592] Linux 5.12
Akhirnya kami memiliki beberapa informasi yang berguna, tetapi butuh dua tingkat verbositas, dan ada banyak informasi yang biasanya tidak berguna.
git branch-list
kami Di sisi lain, dengan git branch-list
:
* master origin/master
Ledakan! Segera kita melihat informasi yang paling berguna: master
Tracks origin/master
.
Kemudian, jika kita ingin tahu kapan cabang mutakhir, kita menggunakan -t
:
* master origin/master<
Apakah kita benar -benar peduli jika kita 16592 berkomitmen di belakang, sebagai lawan dari 14386 komit di belakang? Tidak, yang kita pedulikan adalah bahwa kita adalah Beind, yang diwakili oleh <
simbol. Ini adalah informasi yang sama yang Anda dapatkan saat Anda menggunakan __git_ps1
dengan GIT_PS1_SHOWUPSTREAM=auto
.
Jika Anda ingin informasi lebih lanjut, Anda dapat menentukan opsi -v
:
* master [origin/master<] Linux 5.12
Kami mendapatkan semua informasi yang paling berguna di semua tingkatan (siapa yang peduli apa ID objek itu?).
Anda bisa mendapatkan beberapa keuntungan dari git branch-list
dari git branch
resmi, siapa pun, Anda perlu tahu secara khusus opsi mana yang akan diaktifkan.
Misalnya, katakanlah Anda memiliki beberapa cabang yang memperbarui dokumentasi diawali dengan doc-
. Dengan git branch
resmi Anda bisa melakukan sesuatu seperti:
git branch --list doc-*
Namun, ini berfungsi, 1) tidak berfungsi kecuali Anda menentukan --list
, dan 2) Anda perlu menambahkan tanda bintang ( *
).
Di sisi lain dengan git branch-list
:
git branch-list doc
Anda tidak memerlukan opsi apa pun, atau tanda bintang. Itu hanya bekerja langsung.
Contoh lain; Anda dapat mengaktifkan penyortiran cabang yang berguna dengan konfigurasi berikut:
[branch]
sort = -committerdate
Tetapi dengan git branch-list
yang tidak perlu Anda lakukan; itu disortir secara default.
Untuk menguji kinerja, saya akan menggunakan repositori nyata: Linux. Saya membuat 100 cabang di titik acak sepenuhnya selama 10 tahun terakhir.
Setelah melakukan pemanasan cache:
git branch --list --verbose
21.804 seconds
21.614 seconds
21.415 seconds
git branch-list
0.104 seconds
0.107 seconds
0.107 seconds
Apakah ada pertanyaan?
git branch-list
sama dengan git branch --list
... tapi jauh lebih baik .
Salin skrip di mana saja di $PATH
Anda dan buat itu dapat dieksekusi, atau jalankan make install
yang akan menginstalnya secara default ke direktori ~/bin/
Anda (pastikan itu ada di $PATH
Anda).