假設我在 git repo 中呼叫以下命令:
git log --oneline -n 10 | grep pattern
它給了我以下輸出:
c95383f asdfasdf pattern
3e34762 asdfasdfsd pattern
我怎樣才能只從第二行獲取提交哈希,以便我可以將它傳輸到另一個命令中?
uj5u.com熱心網友回復:
您可以awk為此考慮:
git log --oneline -n 10 | awk '/pattern/ {print $1}'
其中/pattern/匹配pattern一行,同時{print $1}列印匹配行中的第一個欄位。
uj5u.com熱心網友回復:
我朋友剛剛給我看了這個:
git log --oneline -n 10 | grep pattern | awk 'END{print $1}'
但我有興趣看看是否有人有任何不同的解決方案。
uj5u.com熱心網友回復:
對于列印的提交(在本例中為 10 個),列印最舊提交匹配pattern的哈希值:
git log --oneline -n 10 |
awk '$0 ~ /pattern/ {hash = $1} END {print hash}'
相同,但對于第N 個最新的:
git log --oneline -n 10 |
awk '$0 ~ /pattern/ && c==N {print $1}'
(使用 1 表示最新,或 2 表示第二次,等等,在本例中 N 必須 <= 10)
列印第 N 個最新提交的哈希值(無模式):
git log --oneline -n N |
awk 'END {print $1}'
或者
git log --oneline |
awk 'NR==N {print $1}'
請記住,git log有選項--since、--after、--until和--before,它們以日期作為輸入。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/353644.html
