git diff --name-only
或git diff --name-status
将列出所有已更改的文件,但是没有命令列出包含已更改文件的所有文件夹名称。
例如,使用此目录树:
test/
|
|__B/
|
|____b1.txt
|
|__C/
|
|____c1.txt
如果b1.txt
和c1.txt
发生了变化,我希望B
和C
作为输出。
答案 0 :(得分:6)
这是一种方式:
git diff --name-only | xargs -L1 dirname | uniq
<强>解释强>
git diff --name-only
:列出所有已更改的文件xargs -L1 dirname
:删除文件名以仅保留目录uniq
:删除重复项随意创建an alias,这样您就不必在每次需要时输入整个命令:
alias git-diff-folders="git diff --name-only | xargs -L1 dirname | uniq"
答案 1 :(得分:2)
此命令将提供顶级目录的结果。
git status | cut -d'/' -f1
我目前正在寻求更深入的解决方案 bash中的$ {PWD ## * /}可以找到更正确的问题解决方案。
尝试使用与此npm解决方案类似的git为您编写解决方案:
get the path where npm gulp called from
我不再在这个问题上寻找答案,
git diff --name-only | xargs -L1 dirname | uniq
是Pᴇʜ
提供的正确答案在编辑后
在我的Mac电脑上运行