【问题标题】:git commit once and ignore from then ongit commit 一次并从那时起忽略
【发布时间】:2012-11-07 11:38:34
【问题描述】:

我想使用 git 进行提交,其中包含我们 .net 应用程序中连接字符串的基本结构。

例如,我们有一个导入 connectionStrings.config 的 web.config。

我想提交一个初始connectionStrings.config,这样我们就不必手动添加一个,它具有我们需要的基本设置,我们可以修改字符串的各个部分(通常只是服务器name),然后忽略从该点开始对该文件的任何更改。

现在我已经尝试将它添加到 .gitignore 但从我读过的内容来看,跟踪文件不受 .gitignore 的限制我也尝试过 git update-index --assume-unchanged connectionStrings.config 但这似乎是一个临时修复,因为在签出另一个分支时,我仍然对挂起的文件更改感到困惑。

有什么好的办法吗?

【问题讨论】:

  • 你有没有考虑过有一个默认的配置文件,它被跟踪,而用户覆盖配置不是?这不仅对开发有用,对用户也有用。可以更新默认配置而不会破坏其自定义。

标签: git gitignore


【解决方案1】:

您可以使用git attribute filter driver 和版本:

  • connectionStrings.basic.template文件
  • smudge 脚本负责创建实际的(未版本化的)connectionStrings.basic,如果它不存在,则每次签出 repo(当过滤器驱动程序 detects the content of that template file 时)
  • 一个干净的脚本,它将恢复 connectionStrings.basic.template 的原始内容(在修改该模板文件的情况下)以保持模板文件不可变。

请参阅 git attributes 了解示例。

【讨论】:

    【解决方案2】:

    为什么不在 git 中添加类似 connectionStrings.basic.config 之类的内容,然后将其重命名为新实例?

    【讨论】:

    • 我猜那将是我的后备方案,但是我希望能够检查项目,并且在根据默认连接字符串设置 PC 的情况下,您不需要这样做复制文件等任何额外的麻烦
    【解决方案3】:

    如何将文件放入 .gitignore 并在克隆后运行一个初始化脚本(包含在 repo 中)来创建文件?它也可以执行其他任务,因为听起来在您的设置中您可能也有其他类似的设置。如果不是现在,也许在未来。

    通常在从源代码构建可运行的应用程序时会处理此类事情,但听起来您的应用程序不需要单独的构建过程,因此您没有该步骤。这不是最佳的,但如果它只是一个命令来满足这个和任何未来的需求,我认为这并不多。

    有一系列工具/脚本语言/助手可以做到这一点,只要最适合您的环境/应用程序。 Ant 或类似的东西也与环境无关。

    【讨论】:

      猜你喜欢
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      • 2011-03-20
      • 2016-12-28
      • 2021-06-23
      • 2019-06-02
      相关资源
      最近更新 更多