出于某种原因,我希望在我的存储库中有一个空文件。该文件需要存在,但构建过程更改了它,我不希望提交这些更改。我需要克隆我的存储库的用户也忽略对此文件的更改。
git update-index --assume-unchanged
看起来不错,但它只能在本地工作。
你知道我怎么解决这个问题吗?
最佳答案
清洁过滤器方法 mentioned通过 jthill是正确的做法。 +1
每次将文件“添加”到索引时,它都会强制恢复文件(这意味着它实际上从未被添加,因为它没有更改)。
问题:如何强制用户定义?
解决方案:让他们克隆一个模板存储库,其中已经包含:
- 那个空文件,
- 和
.gitattributes
文件,其中声明了干净的过滤器
如果您将主要集中式存储库设置为拒绝不是快进更新的引用更新(git config receive.denyNonFastForwards true
),您的用户将别无选择,只能推送来自与您的模板 repo 具有相同共同历史的 repo 。
这意味着他们将拥有这些设置。
当然,他们可以在新提交中删除上述设置,但那是 jthill 的回答中的 pre-receive
Hook 启动的时候。
如果他们不需要了解这些文件,他们很可能不会弄乱已经为他们定义的内容。
关于git - 忽略来自 Git 存储库及其克隆的版本控制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19385121/