我們的倉庫中的每個提交都有一個與其關聯的標記。分支上有很多標籤中有「B7」的標籤。我可以運行gitk
並排除所有這些「B7」標籤嗎?相反,如何運行gitk
並只顯示做的中有「B7」的提交?使用gitk時只顯示某些標籤?
我厭倦了做gitk --all
並得到一堆額外的絨毛。
我們的倉庫中的每個提交都有一個與其關聯的標記。分支上有很多標籤中有「B7」的標籤。我可以運行gitk
並排除所有這些「B7」標籤嗎?相反,如何運行gitk
並只顯示做的中有「B7」的提交?使用gitk時只顯示某些標籤?
我厭倦了做gitk --all
並得到一堆額外的絨毛。
它發生在我寫這個的一半,也許你想顯示提交,但只是想要一些提交不顯示標籤指向他們。這回答了一個問題:「我如何看到從某些或所有分支可訪問的所有提交,但不提交從那些分支不可訪問的某些標記可訪問?」。
gitk
採用相同的選項git-rev-list
,用於選擇提交顯示量。因此,您可以提供--branches
和/或--tags
,而不是--all
,它們都接受「模式」參數。
不幸的是,該模式參數是外殼的glob風格模式,它很容易包括那些含有B7
(*B7*
會做的伎倆),但很難排除那些包含的東西,有B7
嵌入在其內的任意位置。如果B7
是名稱的開始或年底它不太困難,但還是有點混亂:--tags="[AC-Za-z]*" --tags="B[A-Za-z0-689]*"
,例如,可能是不夠好,匹配兩個或更多的字符不B7
開始標籤(添加--tags="?"
以包含單字符標籤)。
(這裏的雙引號是爲了防止shell嘗試擴展shell風格的globs,儘管在大多數shell變體中,只要沒有[當前目錄]中名稱以--tags=
開頭的文件,可以逃脫沒有他們。)
對於充分的靈活性,可以使用git for-each-ref
或git show-ref
枚舉引用,通過什麼管道裁判的名字,如grep -v
包含或排除的任意正則表達式,並提供結果作爲參數傳遞給gitk
。例如,看到所有分支上所有提交,加上承諾在
gitk --branches $(git for-each-ref --format='%(refname:short)' refs/tags/ |
grep -v B7)
(沒有實際測試過,但簡單,應該工作,假設sh
或bash
彈)。
(對於csh
或tcsh
,把一切都在同一行,或使用新行之前反斜線;與cmd ... `subcmd ...`
取代cmd ... $(subcmd ...)
反引號版本一般是劣質語法,因爲它不能被嵌套,但它會在這種情況下,這樣做即便。雖然我使用tcsh作爲交互式shell,但我改用sh來編寫腳本。)
您有一些無與倫比的括號......我嘗試修復,但仍然收到'非法變量名'錯誤。你能修改你的答案嗎? –
'$('是在第二行,右邊括號是一些shell變體會抱怨(甚至有些甚至沒有'$('作爲語法...),但是'sh'和'bash'應該是如果沒有的話,把它全部放在一行上,並使用反引號代替$(...)(這應該適用於csh/tcsh;對dash和zsh不知道)。 – torek
感謝您的修正和解釋。這工作,做我想要的! –