在make期间,我创建了我嵌入链接输出中的字符串字段。很有用。
除了sed
命令的复杂grep
/ git status
解析之外,如何根据git
轻松确定工作空间中的文件是否已被修改?< / p>
答案 0 :(得分:43)
如果你只想要一个简单的“与HEAD有什么不同吗?”:
git diff-index --quiet HEAD
如果退出代码为0,则没有差异。
如果您想要“从HEAD更改了哪些文件?”:
git diff-index --name-only HEAD
如果您想要“从HEAD更改了哪些文件,以及更改(添加,删除,更改)了哪些方式?”:
git diff-index --name-status HEAD
如果要重命名(和复制)检测,请添加-M
(和-C
)。
这些命令将检查暂存的内容(索引中的内容)和工作树中的文件。像git ls-files -m
这样的替代方案只会根据索引检查工作树(即它们将忽略工作树中的任何暂存(但未提交)内容)。
答案 1 :(得分:36)
git ls-files -m
要找到这个,你可以浏览git help -a
。
答案 2 :(得分:21)
git status --porcelain
似乎提供了一个很好的可解析输出。
答案 3 :(得分:2)
git diff --name-only
做同样的事情(可能更直观......)
答案 4 :(得分:0)
对于git hook,我发现此命令很有用
git diff-index --exit-code --ignore-submodules HEAD
例如
//run some static analysis check that can change the code
something_changed=`git diff-index --exit-code --ignore-submodules HEAD`
if [ -n "$something_changed" ]
then
echo >&2 "Something changed in $local_ref, not pushing"
exit 1
fi