假設我有3個提交的分支主機,註釋分別爲t123,b1和b12。如何在沒有特定提交的情況下搜索git日誌
* b90b03f (HEAD -> master) b12
* 27f7577 b1
* 7268b40 t123
而現在,我想用git log --grep <regex>
搜索日誌日誌而不T123。 我想要的結果是
* b90b03f b12
* 27f7577 b1
那麼,如何使用正則表達式來滿足需求?
假設我有3個提交的分支主機,註釋分別爲t123,b1和b12。如何在沒有特定提交的情況下搜索git日誌
* b90b03f (HEAD -> master) b12
* 27f7577 b1
* 7268b40 t123
而現在,我想用git log --grep <regex>
搜索日誌日誌而不T123。 我想要的結果是
* b90b03f b12
* 27f7577 b1
那麼,如何使用正則表達式來滿足需求?
這聽起來像你想要的是包括所有提交,其提交的信息不匹配某種模式,但--grep
包括承諾是做比賽的一些模式。但是,「如何編寫一個匹配除某種模式之外的所有東西的正則表達式」的答案是:您不知道。
你並不需要,因爲你可以使用別的(或者更準確地說,一些額外的)排除在它的字符串「T123」的承諾。特別是,如果你看一下,你會發現,它不僅擁有--grep=<pattern>
的選擇,但也是一個--invert-grep
選項:
--invert-grep
限制了提交輸出到那些與日誌消息不符合 的模式--grep=<pattern>
。
也就是說,不是發明了某種逆正則表達式,你只需告訴命令從反轉結果正則表達式搜索。由於你的正則表達式只是一個沒有元字符的固定字符串:
git log --grep t123 --invert-grep
會完成這項工作。 (--grep
和<pattern>
部分之間的=
是可選的--grep
。)
是,在某種意義上,不是不可能的;這只是太困難,效率低下,最重要的是,沒有必要。
是的,它確實有效地工作,謝謝! –
如果你在另一個環境中有同樣的問題,你可以寫一個反轉表達式,例如:'[^ t] | t [^ 1] | t1 [^ 2] | t12 [^ 3]', 't123' – lmcarreiro
@lmcarreiro:那不太合適,因爲如果我們有'foo t123','[^ t]'選項就會匹配'f'。事實上,如果我們只是't123'和正則表達式搜索,它會匹配,因爲'[^ t]'匹配'1'!爲了做到這一點,你需要一個*錨定的* regexp,或者再次用簡單的反轉來簡化整個問題(這就是爲什麼'grep'具有'-v'的原因)。 – torek
add'--invert-grep' – ElpieKay