2016-04-15 79 views
0

我想知道是否有任何命令只會打印當前工作目錄中被修改的目錄名(文件被添加,刪除或修改)。Git - 如何僅打印早期提交中修改的目錄?

我嘗試使用git diff --name-only HEAD~1..HEAD,但它打印的文件已更改。所以,這將涉及到dirname以獲得目錄。任何其他簡單的方法來做到這一點?提前致謝。

回答

1

你可以做這樣的事情:

git diff --name-only HEAD~10..HEAD -z | xargs -0 dirname | sort | uniq 

-z選項詢問NUL分隔的輸出,這使得xargs -0對NUL字符分割在一個可靠的方法。 xargs dirname將命令dirname應用於每個條目,並且sort | uniq刪除重複項。

+0

非常感謝。有用!我會upvoted,但我沒有聲望呢! :) –

+0

我會從上述語句的輸出中刪除一些內容,例如: 'git diff --name-only HEAD〜1..HEAD -z | xargs -0 dirname |排序| uniq | sed'/ something/d' 但這個東西可以變得更大,因爲我寫了更多的代碼。有沒有辦法將一個函數傳遞給管道?比如'git diff --name-only HEAD〜1..HEAD -z | xargs -0 dirname |排序| uniq | delete_somethingS'其中'delete_something'是我用sed delete語句事先聲明的函數。 –

+0

這是一個不同的問題(一個shell問題而不是Git問題)。基本上你想要一個for循環,但如果需要的話打開一個不同的問題。 –