git中是否有一种方法可以在给定的文件集上默认使用git update-index --assume-unchanged FILE_NAME
的结果?例如,一个git配置文件列出了默认情况下未跟踪更改的文件,这样我们就不必在克隆repo后运行命令了?这些文件将以默认格式存在于存储库中,由开发人员提取,并且他们对文件所做的任何更改都不会被后拉动跟踪或覆盖。
例如:我有一个web.config文件,其中包含项目使用的连接字符串的占位符。理想情况下,开发人员将克隆repo并使用指向其本地资源的连接字符串替换这些占位符。无需运行任何命令。这样,除非web.config文件的格式在repo中发生变化,并且它们的本地更改不会被推送到repo,因此这些更改将保留在后向拉取中。
这可以通过配置文件在git中实现吗?或者我是否总是必须为"文件集运行命令以保持不变"?
答案 0 :(得分:2)
更好的方法(比尝试使用assume-unchanged
或skip-worktree
调整索引)是不跟踪这些文件,而是生成它们(并制作)确定它们在.gitignore中,不跟踪并忽略
这样,你可以随意修改它们,而不必管理它们的Git索引状态(因为它们没有被跟踪)
为此,您进行版本和跟踪:
file.tpl
(带占位符值的模板文件)。 .gitignore
忽略生成的文件.gitattribute
声明smudge
内容过滤器(见下文)使用content filter driver通过 .gitattributes
declaration 自动生成文件。
(来自"Customizing Git - Git Attributes"的图片来自" Pro Git book"))
在本地配置中声明内容文件管理器驱动程序后,它会自动在git checkout
为您生成(未跟踪)文件。
请参阅" Best practice - Git + Build automation - Keeping configs separate"。