繁体   English   中英

如何停止跟踪文件并将其当前状态保存在Git中?

[英]How do I stop tracking a file and keep its current state in Git?

我的python程序有一个配置文件,用户必须在其中插入API密钥。

我正在使用Git跟踪文件,并且仅以模板形式提交了文件。

我需要自己使用私有API密钥使用文件,因此如何告诉Git模板版本是“最终”版本,并且不跟踪任何进一步的更改?

您可以将文件标记为“ skip-worktree”,从那一刻起,对此文件的更改将在diff和commit上被忽略:

git update-index --skip-worktree filename

当合并或拉取影响文件时,您将得到一个错误,并且必须重置该标志(这样做是为了防止错误)。

参见https://www.kernel.org/pub/software/scm/git/docs/git-update-index.html

我需要自己使用私有API密钥使用文件,因此如何告诉Git模板版本是“最终”版本,并且不跟踪任何进一步的更改?

将文件添加到存储库后,将其添加到.gitignore将不起作用,因为它已经被git跟踪。

您将需要使用assume-unchanged标志
https://git-scm.com/docs/git-update-index

git update-index --assume-unchanged <path>

如果您需要打印出标有--assume-unchanged标志的文件列表:

git ls-files -v|grep '^h'

-[无]假设不变

指定此标志时,为路径记录的对象名称不会更新。

而是,此选项设置/取消设置路径的“假定不变”位。

当“假定未更改”位打开时,用户承诺不更改文件,并允许Git假定工作树文件与索引中记录的文件匹配。 如果要更改工作树文件,则需要取消设置该位以告知Git。 当在lstat(2)系统调用非常慢的文件系统上处理大型项目(例如cifs)时,这有时会很有用。

如果需要修改索引中的该文件(例如合并提交)时,Git将失败(正常)。 因此,如果假定未跟踪的文件在上游被更改,则您将需要手动处理这种情况。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM