快速检测git存储库中添加/删除的文件

时间:2015-05-14 09:02:22

标签: git bash batch-file

我们说我有一个带.gitignore的git存储库。

我想快照'存储库在某个时间点,并在存储库外部的位置保存某种摘要(我不能更改存储库)。

然后,我希望能够检测git存储库中是否有任何文件被添加或删除(但我并不关心更改)。自上次快照以来,.gitignore中没有这些文件。 。我希望这个检查非常快(对于编辑器插件来说是这样 - 响应时间至关重要)。

如果我只关心提交的文件,解决方案将是微不足道的:将HEAD提交哈希存储在快照中,并比较提交。但是我关心未提交和未跟踪的文件 - 我唯一不关心的文件是.gitignore中的文件。

基本上我想在某个时间点存储git ls-files -c -o --exclude-standard的输出,并查看它是否在以后更改,而不处理整个输出。

我更喜欢纯粹的git解决方案,但除此之外,我真的很喜欢跨平台的bash / batch解决方案。

1 个答案:

答案 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命令的整个输出。