Git:忽略跟踪的文件

Git:忽略跟踪的文件,git,Git,我在存储库中有一些跟踪文件,在构建代码时会自动修改这些文件。我不想取消对它们的跟踪,我只是不希望它们显示为已修改,也不希望它们在git add时被暂存 这可能吗 当然 git update-index --assume-unchanged [<file> ...] git更新索引--假定未更改[…] 要撤消并重新开始跟踪,请执行以下操作: git update-index --no-assume-unchanged [<file> ...] git更新索引--不假设

我在存储库中有一些跟踪文件,在构建代码时会自动修改这些文件。我不想取消对它们的跟踪,我只是不希望它们显示为已修改,也不希望它们在git add时被暂存

这可能吗

当然

git update-index --assume-unchanged [<file> ...]
git更新索引--假定未更改[…]
要撤消并重新开始跟踪,请执行以下操作:

git update-index --no-assume-unchanged [<file> ...]
git更新索引--不假设未更改[…]

使用git属性和filter命令中的%f的另一个解决方案:

git config filter.orig.clean "cat %f.orig"
cp filename filename.orig
echo "filename filter=orig" >> .git/info/attributes
echo "filename.orig" >> .git/info/exclude
另一种方法(来自Seth Robertson现在删除的答案,但我发现恢复它很有帮助)是维护一个“跟踪的”模板文件,然后使用它的本地未跟踪版本,例如:“config.sample.ini”或“config.ini.template”,请参阅完整示例


那么,如果文件在git中发生更改,就不会有任何问题,等等。您可以在本地未跟踪的文件上使用.gitignore(最终)。

如果我对文件进行修改,在这种状态下,文件会发生什么情况?@haymansfield命令的帮助页上说,以下
git将失败(很正常)如果需要在索引中修改此文件,例如在提交中合并时;因此,如果假定的未跟踪文件在上游发生更改,您需要手动处理这种情况。
是否有方法在克隆时应用
--假定未更改
?这样所有用户都会拥有这些文件,但在差异中看不到对它们的本地更改。@Tyler-否,一旦git跟踪了一个文件,它将始终被跟踪,即使该文件出现在.gitignore中。我的用例类似于“这是一个文件的基本模板,您可以在其中存储凭据,但现在永远不要提交它”。@watbywbarif我有命令
git update index--no-asked unchanged$(git ls files$(git rev parse--show top level))
设置为git别名。每当我怀疑这是一些恶作剧,我就这么做。如果这些文件是由构建自动生成的,则可能重复,这是一个关于gitignore的快速教程,您可能会发现它很有用:您能提供更多关于这意味着什么以及它偶然做了什么的详细信息吗?这为从具有原始文本的“.orig”文件读取内容的文件添加了过滤器