如何冻结存储库中的文件

lar*_*ryq 5 git

我们有一种情况,就是我们的存储库中的文件应被锁定在适当的位置,不可更改。

我已将文件添加到其中,.gitignore但是当我在本地对其进行修改时,git仍会跟踪该文件-我现在的理解是,将文件/文件夹添加到.gitignore中后,它们就已经无法使用了,一种可能性是使用git rm --cached file取消追踪。

如果我这样做了,下一个克隆该文件的​​人将不再在该存储库中使用该文件吗?有没有更好的方法可以在回购中冻结此文件?

小智 5

如果您想“冻结”文件(防止 Git 中跟踪进一步的更改),您可以运行git update-index --assume-unchanged somefile.

来自文档:

当“假设不变”位打开时,用户承诺不更改文件,并允许 Git 假设工作树文件与索引中记录的内容匹配。

进一步阅读:git-update-index

注意:这不会阻止其他人更改文件。如果您希望文件在 Git 中真正永不更改,则每个克隆存储库的人都必须运行此命令。


che*_*ner 2

git rm --cached file确实会从存储库中删除该文件,以便该文件仅作为当前工作目录中的未跟踪文件存在。未来的克隆将不包含该文件。

Git 并没有真正提供冻结文件以使其无法修改的方法。您能做的最好的事情就是创建一个预提交挂钩,该挂钩在提交之前重置文件,或者最好中止提交,直到您自己重置文件。