如何保留所有分支上的文件的本地更改,以及在提取之后,但从不提交更改

时间:2015-07-08 09:58:54

标签: git

我有一些配置文件(在RoR中的东西:.env,config / database.yml,.ruby-version),我想在我的本地环境中自定义它们。

我知道如何忽略该文件,以便不在本地跟踪它们,但是如何在“拉”或“合并”后停止文件与原点同步?

1 个答案:

答案 0 :(得分:1)

我建议只修改那些配置文件的模板,而不是实际配置文件及其值。
您可以考虑使用content filter driver(使用.gitattributes declaration)来生成实际文件。

我们的想法是在版本中管理这些配置文件,但使用 template 占位符代替实际(敏感)值。
生成的文件仍然被忽略(.gitignore

  • 涂抹部分可以用实际值(在结帐时)替换模板内容
  • 干净的部分可以恢复模板(提交时)

smudge

(来自“Customizing Git - Git Attributes”的图片,来自“Pro Git book”)

主要思想是:如果值取决于环境,则涂抹脚本会将占位符值替换为实际值,具体取决于环境,可以从 outside repo中获取的值(特别是对于生产值是真的。)