假设我有一个带有.gitignore的git存储库。
我想在某个时间点"快照"存储库,然后将某种摘要保存在存储库之外的位置(我一定不能更改存储库)。
然后,我希望能够检测到Git存储库中是否添加或删除了任何文件(但我不在乎更改),这些文件自上次快照以来就不在.gitignore中。我希望此检查非常快(这是一个编辑插件 - 响应时间至关重要)。
如果我只关心订员文件,则解决方案将是微不足道的:将HEAD COMIL HASH存储在快照中,并比较提交。但是,我 do 关心未投入和未跟踪的文件 - 我唯一不关心的文件是.gitignore
中的文件。
基本上,我想将git ls-files -c -o --exclude-standard
的输出存储在某个时间点上,然后查看它是否在以后更改,而不处理整个输出。
我更喜欢纯GIT解决方案,但否则我真的很喜欢跨平台bash/batch解决方案。
以下"如何分散文件并从命令中输出?"
#!/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
命令的整个输出。