當前版本的git branch --list
主要是有效的,但是它很慢而笨拙。雖然可以輕鬆地將其固定在git本身中,但是實際上拒絕了試圖改善用戶界面的每個補丁。
外部命令git branch-list
是解決方案。
為什麼git branch-list
更好?
git branch --list
假設您有一個跟踪遠程分支的master
分支,但並非總是最新的(我們將使用Linux的存儲庫)。
在這種git branch
下
* master
這不會提供太多信息。如果您使用--verbose
選項,則會得到:
* master 9f4ad9e425a1 [behind 16592] Linux 5.12
好的,我們在16592年的投入下落後了,但是在什麼之後呢?我們可以從提交標題中猜出,但這並不清楚。
如果我們使用--verbose --verbose
我們會得到:
* master 9f4ad9e425a1 [origin/master: behind 16592] Linux 5.12
最後,我們有一些有用的信息,但是花費了兩個級別的詳細信息,而且通常有很多信息通常沒有用。
git branch-list
另一方面,帶有git branch-list
:
* master origin/master
繁榮!馬上,我們看到了最有用的信息: master
軌道origin/master
。
然後,如果我們想知道分支機構何時最新,我們使用-t
:
* master origin/master<
我們是否真的在乎我們是否在16592年落後,而不是在14386年的落後?不,我們所關心的是我們是<
符號所代表的貝德。這是與GIT_PS1_SHOWUPSTREAM=auto
一起使用__git_ps1
時獲得的相同信息。
如果您需要更多信息,則可以指定-v
選項:
* master [origin/master<] Linux 5.12
我們在各個級別上獲得所有最有用的信息(誰在乎對象ID是什麼?)。
您可以從官方git branch
中獲得git branch-list
的一些優勢,無論誰,您都需要專門知道可以啟用哪些選項。
例如,假設您有幾個分支機構,可以更新以doc-
的限制。使用官方的git branch
您可以做類似的事情:
git branch --list doc-*
但是,這起作用,1)除非您指定--list
,否則它不起作用,2)您需要添加星號( *
)。
另一方面, git branch-list
:
git branch-list doc
您不需要任何選擇,也不需要星號。它只是直接起作用。
另一個例子;您可以啟用具有以下配置的有用分支的有用分類:
[branch]
sort = -committerdate
但是,對於git branch-list
您不需要;默認情況下已排序。
為了測試性能,我將使用一個真實的存儲庫:Linux。在過去的10年中,我在完全隨機的位置創建了100個分支。
加熱緩存後:
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
還有一個問題嗎?
git branch-list
與git branch --list
...但是更好。
在$PATH
中的任何位置複製腳本,並使其可執行,或者運行make install
,默認將其安裝到您的~/bin/
Directory(請確保它在$PATH
中)。