Git - 如何在克隆后自动忽略一个文件?

4
我想知道是否有一种方法可以将文件包含在存储库中,但在用户克隆存储库后自动忽略该文件...这对于配置文件来说非常好:一旦你克隆了存储库,你只需要编辑它(而不必记得将其放入.gitignore文件中)。

1
据我所知,由于git(默认情况下在克隆后)跟踪索引文件的所有更改,因此无法做到这一点。解决方法是编写一个小脚本(例如bootstrap.sh),用于生成配置文件,并将生成的文件添加到.gitignore中。 - MBlanc
这是我得到的最佳答案 :-) 关键在于没有自动处理的方法,所以我们到此为止 :-) - sekmo
请记住,如果您对所有当前答案不满意,自我回答是明确鼓励的。您可能希望这样做以获得一个被接受的答案。干杯! - MBlanc
2个回答

3

有一种方法是运行以下命令:git update-index --assume-unchanged filename.txt

另一种方法是提交文件的模板版本,进行克隆后,复制模板并将复制的文件添加到.gitignore中。

不幸的是,这两种方法都需要在克隆后执行某些操作。


2
有几个选项:

将文件添加到 .gitignore 文件中

这将忽略该文件及其所做的任何更改。

--assume-unchaged

对此文件使用 --assume-unchaged 标志,以停止跟踪该文件上的更改。

--[no-]assume-unchanged

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

相反,此选项为路径设置/取消设置 assume unchanged 位。

assume unchanged 位为 on 时,用户承诺不更改文件,并允许 Git 假设工作树文件与索引中记录的内容匹配。如果要更改工作树文件,则需要取消设置位以告知 Git。在使用具有非常慢的 lstat(2) 系统调用(例如 cifs)的文件系统上处理大型项目时,这有时是有帮助的。

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

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接