git - 默认为 "git update-index --assume-unchanged"

标签 git web-config config ignore

在 git 中有没有办法在给定的一组文件上默认得到 git update-index --assume-unchanged FILE_NAME 的结果?例如,一个 git 配置文件列出了默认情况下不跟踪更改的文件,这样我们就不必在克隆 repo 后运行命令?这些文件将以默认格式存在于存储库中,由开发人员 pull ,并且他们对文件所做的任何更改都不会被跟踪,也不会被后 pull 覆盖。

例如:我有一个 web.config 文件,其中包含项目使用的连接字符串的占位符。理想情况下,开发人员会克隆存储库并用指向其本地资源的连接字符串替换那些占位符。无需运行任何命令。这样,这些更改将保留在后 pull 中,除非 web.config 文件的格式在 repo 中发生更改,并且它们的本地更改不会被推送到 repo 。

这在 git 中可以通过配置文件实现吗?或者我是否总是必须运行“假设未更改的文件集”的命令?

最佳答案

一个更好的方法(比尝试调整索引,使用 assume-unchangedskip-worktree)是跟踪这些文件完全没有,但要生成它们(并确保它们在 .gitignore 中,即 跟踪和忽略)

那样的话,你可以随意在本地修改它们,根本不需要管理它们的 Git 索引状态(因为它们没有被跟踪)

为此,您进行版本和跟踪:

  • file.tpl(带有占位符值的模板文件)。
  • 能够获取模板文件并生成实际文件(保持未跟踪、私有(private))的脚本
  • 一个 .gitignore 忽略生成的文件
  • 一个 .gitattribute 声明一个 smudge 内容过滤器(见下文)

文件的生成是通过 content filter driver 自动生成的,使用 .gitattributes declaration .

/image/tumAc.png
(图片来自 "Customizing Git - Git Attributes" 来自“Pro Git book ”))

一旦您在本地配置中声明内容文件管理器驱动程序,它就会自动在 git checkout 上为您生成(未跟踪的)文件。
请参阅“Best practice - Git + Build automation - Keeping configs separate”中的完整示例。

关于git - 默认为 "git update-index --assume-unchanged",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46353292/

相关文章:

git - 处理用于测试和生产的 git 分支

linux - SCSS 。如何添加不是那些返回错误的所有文件?

git - 通过 merge 压缩/修复提交

asp.net - 如何使用 System.Net.HttpClient 正确指定代理

c++ - libconfig 不是静态链接。如何编译成程序

java - jar 文件 : load configuration files in jar

git - 如何进行只有我能看到的更改?

.net - 在 Web.Config 中存储来自电子邮件友好显示名称的 Smtp

c# - 从 web.config 读取 AuthorizationSection 提供了不正确的值

javascript - 动态返回配置值(node.js)