2017-01-09 108 views
1

有多种问题,并解释如何将文件添加到一个Git仓库,而忽略未来这一切变化对SO答案。这通常是通过伴随的assume-unchangedskip-worktree选项之一update-index命令来完成的。如何防止任何人在git中修改跟踪文件?

但是,这些命令只对局部范围的效果。我将在给定文件上执行的更改将被忽略,并且不会显示在暂存文件列表中。我想要的是防止任何人修改给定的文件。例如,我可能会添加一个.properties文件,该文件将作为克隆我的存储库的用户的模板,我不希望它是可修改的。这怎么可能完成?

+1

使用服务器端挂钩,因为拒绝修改到有问题的文件。请参阅接受这个问题的答案http://stackoverflow.com/questions/27553551/how-can-i-mark-a-committed-file-as-read-only-in-git – U007D

+0

除此之外,玩脏并设置文件权限,只有你可以写入,但任何人都可以阅读。 – CDove

+2

通常人们通过一个名为'settings-example.properties'的文件来完成这个工作,在配置期间里面有指令拷贝到'settings.properties'中。 'settings-example.properties'被检入,而'settings.properties'包含在项目的'.gitignore'文件中。 –

回答

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 
相关问题