我们说我有一个带.gitignore的git存储库。
我想快照'存储库在某个时间点,并在存储库外部的位置保存某种摘要(我不能更改存储库)。
然后,我希望能够检测git存储库中是否有任何文件被添加或删除(但我并不关心更改)。自上次快照以来,.gitignore中没有这些文件。 。我希望这个检查非常快(对于编辑器插件来说是这样 - 响应时间至关重要)。
如果我只关心提交的文件,解决方案将是微不足道的:将HEAD提交哈希存储在快照中,并比较提交。但是我做关心未提交和未跟踪的文件 - 我唯一不关心的文件是.gitignore
中的文件。
基本上我想在某个时间点存储git ls-files -c -o --exclude-standard
的输出,并查看它是否在以后更改,而不处理整个输出。
我更喜欢纯粹的git解决方案,但除此之外,我真的很喜欢跨平台的bash / batch解决方案。
答案 0 :(得分:0)
跟随“ How to diff a file and output from the command?”
#!/bin/bash
cd /path/to/repo
d=$(git ls-files -c -o --exclude-standard | diff yourfile -)
if [[ "${d}" != "" ]]; then
# there are diffs
fi
但这仍然会使用git ls-files
命令的整个输出。