SO上有多个问题和答案,解释了如何将文件添加到git存储库并忽略对它的所有未来更改。这通常通过update-index
命令以及assume-unchanged
或skip-worktree
选项之一来完成。
但是,这些命令仅对本地范围有效。我将对给定文件执行的更改将被忽略,并且不会显示在已暂存文件列表中。我想要的是防止任何人修改给定的文件。例如,我可能会添加一个.properties文件,该文件将作为克隆我的存储库的用户的模板,并且我不希望它可以修改。怎么能实现呢?
答案 0 :(得分:3)
例如,我可能会添加一个.properties文件,该文件将作为克隆我的存储库的用户的模板,我不希望它可以修改。怎么能实现呢?
其他人的存储库是他们的。您可以控制存储库中发生的情况。他们控制着他们发生的事情。
您可以使用预接收挂钩审查推送到您的存储库的内容,该挂钩会扫描您不想要的内容的入站提交,例如:
#!/bin/sh -f
while read old new ref; do news="$news $new"; done
git rev-list $news --not --all | while read check; do
[[ `git rev-parse $check:path/to/it` = `git rev-parse master:path/to/it` ]] \
|| { echo "path/to/it altered in commit $check; refusing push"; rc=1; }
done
exit $rc