[英]Filter git log to show only commits with notes
如何轉儲我的提交日志,僅顯示帶有給定命名空間注釋的提交?
沒有注釋的提交,或者不屬於給定命名空間的注釋應該被過濾掉
在文本轉儲中,我不僅需要注釋,還需要提交信息。
我玩過:show refs/notes/,我相信解決方案可能就在那里,而不是“git log”。 但是,我仍然遇到一些問題,無法找到顯示所有提交的正確命令。
git notes
會給你每個筆記的 id 以及它適用的對象。 所以第二列就是你想要的。
$ git notes
f5ac8874676de3029ffc8c31935644ff7c4deae0 07ca160c58cf259fe8bb5e87b9d9a7cbf8845f87
62ecfc95355587d6d1f779fcaca6e4f53d088ccc eb6c60b9dcb56219d9d882759c0bf928f6d6c3fa
使用cut
抓取最后一列並將它們傳遞給git show
。
$ [ "$(git notes)" = "" ] || git notes | cut -d' ' -f2 | xargs git show
要選擇特定的命名空間,請將--ref=namespace
添加到git notes
。
$ [ "$(git notes --ref=namespace)" = "" ] || git notes --ref=namespace | cut -d' ' -f2 | xargs git show
初始測試 [...] 防止了一個小問題:如果不傳遞任何參數, git show 將顯示當前結帳。 因此,如果沒有注釋,您將得到誤導性的輸出。 對於初始測試,這不是問題:如果測試失敗,即,如果沒有注釋,則不會調用 git show。
您可以向 Schwern 答案添加測試:
[ "$(git notes)" = "" ] || git notes | cut -d' ' -f2 | xargs git show
或者選擇一個特定的命名空間:
[ "$(git notes --ref=namespace)" = "" ] || git notes --ref=namespace | cut -d' ' -f2 | xargs git show
然后,如果初始測試 [...] 失敗,即,如果沒有注釋,則不會調用git show 。
如果您只需要帶有附加注釋的提交的git log
樣式報告,那么您可以使用--no-walk
參數告訴git log
將報告限制為僅在命令行上列出的提交。
嘗試這個:
git notes list | cut -d' ' -f2 | xargs --no-run-if-empty git log --no-walk=sorted
我添加了--no-walk=sorted
以按提交時間--no-walk=sorted
輸出,而不是git notes
輸出的任意順序。
您當然可以添加任何其他git log
選項來根據您的喜好格式化輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.