如何解决如何将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\' \' \')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。