如何将git-diff限制为仅一个目录,而没有子目录?

| 我正在使用ѭ0来跟踪在两次提交之间修改/添加/删除/重命名/复制了哪些文件,效果很好。 现在假设我将文件
file1
移到
newdir/file1
,提交,然后运行git diff,我得到了:
$ git diff --name-status -C HEAD~1 HEAD
R100    file1    newdir/file1
有没有办法让git将自身限制为给定目录中的更改列表,而不是其子目录?我想分别知道根目录和
newdir
目录的确切更改。对于
newdir
,这很容易:
$ git diff --name-status -C HEAD~1 HEAD -- newdir
A       newdir/file1
…但是如何在根目录中获取\“ complementary \”差异信息?即,此输出:
$ git diff ???
D       file1
请注意,我想保留“ 8”选项以检测同一目录中的重命名和副本。     
已邀请:
传递给grep:
git diff --name-status HEAD..HEAD~1 . | grep ^[^/]*$
如果您需要从更深的内容中得到一些信息,这将过滤掉包含子目录的所有内容:
git diff --name-status HEAD..HEAD~1 <path> | grep ^<path>[^/]*$
如果需要,您可以轻松为此别名。     
我知道它可能在git中可行,但是我很想使用patchutils中的filterdiff / grepdiff程序,类似这样的方法应该可以
git diff -C .... | filterdiff --clean -x \'*/*/**\'
    
如果运行的Linux或兼容Shell带有ѭ12,则可以使用ѭ12生成当前(或其他)目录中非目录文件的列表,然后将其提供给
git diff
,例如:
git diff --stat --other-git-diff-args -- $(find . -type f -depth 1 -print0 | tr \'\\0\' \' \')
    

要回复问题请先登录注册