忽略Git中特定文件中的一行

Kar*_*hik 5 git

我有一个文件,database.properties其中有

        password = something
Run Code Online (Sandbox Code Playgroud)

因此,每当我必须测试某些东西时,我必须将此行更改为我的本地密码.团队中的每个人都有自己的本地密码.

我想我将不得不做以下其中一项:

  1. 每次我提交我都不应该添加database.properties索引(我不想要ignore这个文件),但是当文件太多时很容易错过这个文件.

  2. 在提交之前撤消更改,但大多数时候我忘记这样做.

  3. 创建个人资料可能是实现这一目标的一种方式,但即使会有类似的问题database.properties.

我已经检查了可以git忽略一个特定的行吗?以及如何告诉git忽略单独的行,即特定行代码的gitignore.

暂时忽略文件,我看到我们可以做到

git update-index --assume-unchanged <file>
Run Code Online (Sandbox Code Playgroud)

但我每次都要这样做.

所有上述参考文献在3 - 4年之前被提出/写入.所以我只想知道如果有更好的方法可以忽略这一行.

编辑

按照@ VonC的回答,我试图添加一个过滤器 .git/info/.gitattribute

{directory_path}/database.properties filter=password // I have given the correct directory path.
Run Code Online (Sandbox Code Playgroud)

我已添加smudgeclean脚本为:

git config --global filter.password.smudge ~/smudge.sh 
git config --global filter.password.clean ~/clean.sh 
Run Code Online (Sandbox Code Playgroud)

(当我运行~/smudge.sh并且~/clean.shpassword= something正确替换了行.所以脚本是正确的.)

但是当我添加/提交时database.properties,似乎对database.properties文件没有任何影响.(我猜我~/clean.sh应该在将其添加到索引时运行)

我究竟做错了什么?

Von*_*onC 2

我支持我 2014 年在“ Can gitignore a certain line? ”中的回答:git 内容过滤器用于通过另一个内容更改文件的一行。

它仍然需要一个(一次性)git config命令才能在您的存储库中声明该过滤器,但它将保持活动状态(与 a 相反git update-index,它可以在 a 上被丢弃git reset

过滤器与文件中的文件关联.gitattributes,放置在与database.properties. (参见讨论
它与在存储库的本地配置中执行的程序关联。