是否存在内置方式(或简单脚本),如果任何子模块修改了文件,是否会让我签入?就像现在一样,我有无用的提交,因为我无法返回到子模块的状态。
答案 0 :(得分:3)
看起来预提交钩子“script for submodule hygiene”适用于:
如果子模块有挂起的更改,则阻止提交
(另见patch/script)
该脚本是4年前编写的,所以git diff现在可能包含一种检测“脏”子模块的简单方法。
答案 1 :(得分:2)
感谢VonC解释我需要做什么。对不起,我不知道Bash,所以这是Ruby版本。完美工作(到目前为止,所有情况下,使用git版本1.7.9.4测试):
#!/usr/bin/env ruby
# http://stackoverflow.com/questions/12648585/git-should-not-checkin-if-submodule-has-modified-files
# October 1, 2012
# call this file pre-commit, make it executable and put it in .git/hooks
puts "Git pre-commit hook by Dan Rosenstark (yar)"
gitDiff = `git diff`
gitDiffWithSubmodules = `git diff --ignore-submodules`
if (gitDiff.length == gitDiffWithSubmodules.length)
puts "Submodules are clean, going right ahead!"
else
puts "One or more submodules are dirty, can't commit.'"
exit 1
end