簡體   English   中英

過濾 git log 以僅顯示帶有注釋的提交

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM