【问题标题】:Add a file to a git repository but ignore future changes on it将文件添加到 git 存储库,但忽略它的未来更改
【发布时间】:2014-11-10 22:54:34
【问题描述】:

我想添加一个overrides.json。这允许开发人员在本地对配置对象进行更改。我希望它以默认状态添加到存储库中,但我希望忽略它的未来更改。

似乎.gitignore 迫使我在忽略它之前将其从分支中删除。我知道git update-index,但每个开发人员都必须手动执行此操作。澄清一下,我不希望删除该文件;我实际上希望将文件添加到存储库中,但之后未跟踪。

我不能简单地删除它,因为GET 对丢失文件的请求会在浏览器的 javascript 控制台中引发丑陋的错误消息。

【问题讨论】:

标签: git


【解决方案1】:

添加文件后,您可以忽略所有进一步的更改:

git update-index --assume-unchanged path/to/file

如果在某个时候您决定需要推送更多更改,您可以通过以下方式再次允许更改:

git update-index --no-assume-unchanged path/to/file

与其在 repo 中添加文件,不如忽略它们并将它们添加到不同的位置,例如。一个安装目录。这样,在克隆 repo 后,开发人员将需要执行一个 init 步骤,将所需文件复制到适当的位置,这些文件将被忽略。

【讨论】:

  • 正如我之前所说,这需要开发人员手动执行此操作。我不能“push”这个--assumed-unchanged 到存储库。我担心开发人员只会做git add .,他们的更改会被推送到存储库中。
  • @BrennanCheung 不,不幸的是我不知道传播assume-unchanged 标志的好方法。但请参阅我更新的答案以了解解决方法。
【解决方案2】:

忽略它,不要将它添加到 repo 中。相反,如果项目的 makefile 不存在,则生成默认版本。当然,假设你有一个 makefile,或者任何类型的 make 或 build 过程。

【讨论】:

  • 这听起来可行,但并不理想。如果我打算这样做,我不妨在配置文件中使用 Rails 样式(开发|测试|生产)部分。但是,这是一个 AngularJS 应用程序,除了 nginx 之外没有任何服务器组件,所以我必须制作一个自定义构建过程并在那时完成。这是一个可能的解决方案,但如果我能在 git 中找到解决方案,那就太过分了。
  • AngularJS 能否在客户端创建文件?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 2012-02-02
  • 2011-10-30
相关资源
最近更新 更多