git 有没有办法得到结果git update-index --assume-unchanged FILE_NAME
默认情况下在一组给定的文件上?例如,一个 git config 文件列出了默认情况下不跟踪更改的文件,这样我们在克隆存储库后就不必运行命令了?这些文件将以默认格式存在于存储库中,由开发人员拉取,并且他们对文件所做的任何更改都不会被跟踪或被后拉覆盖。
例如:我有一个 web.config 文件,其中包含项目使用的连接字符串的占位符。理想情况下,开发人员将克隆存储库并用指向其本地资源的连接字符串替换这些占位符。无需运行任何命令。这样,这些更改将保留在后面的拉取中,除非 web.config 文件的格式在存储库中发生更改,并且它们的本地更改不会被推送到存储库。
这可以通过配置文件在 git 中实现吗?或者我是否总是必须运行“假设未更改的文件集”的命令?
一个更好的方法(比尝试调整索引,用assume-unchanged
or skip-worktree
) is to not跟踪这些文件,但要生成它们(并确保它们位于 .gitignore 中,即not被跟踪并被忽略)
这样,您就可以在本地随意修改它们,而根本不需要管理它们的 Git 索引状态(因为它们不被跟踪)
为此,您需要版本和跟踪:
- a
file.tpl
(带有占位符值的模板文件)。
- 能够获取模板文件并生成实际文件的脚本(该文件保持未跟踪,私有)
- a
.gitignore
它忽略生成的文件
- a
.gitattribute
宣布一个smudge
内容过滤器(见下文)
文件的生成是通过内容过滤器驱动程序 https://stackoverflow.com/a/10571580/6309, 用一个.gitattributes宣言 https://stackoverflow.com/a/2316728/6309.
(image from "Customizing Git - Git Attributes" http://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#Keyword-Expansion from "Pro Git book http://git-scm.com/book/en/v2/"))
一旦您在本地配置中声明了该内容文件管理器驱动程序,它将自动在git checkout
,为您生成您的(未跟踪的)文件。
请参阅“最佳实践 - Git + 构建自动化 - 保持配置独立 https://stackoverflow.com/a/20822928/6309".
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)