我想更改跟踪文件以进行开发,但保持跟踪版本不变.
对此的大多数"解决方案"表明
git update-index --assume-unchanged
Run Code Online (Sandbox Code Playgroud)
但它完全没用,因为文件仍然会被结帐或重置更改.是否有更好的解决方案可以在结账和重置命令后继续存在?
Jus*_*ard 12
这是我认为您正在尝试做的事情,更改文件,但在提交时忽略它.
git update-index --skip-worktree my-file
Run Code Online (Sandbox Code Playgroud)
这是关于一个很好的答案之间的差异assume-unchanged和skip-worktree.
如果您尝试将更改合并到,Git仍会发出警告my-file.然后你将不得不"解开"文件,合并它并"重新跳过"它.
git update-index --no-skip-worktree my-file
# merge here
git update-index --skip-worktree my-file
Run Code Online (Sandbox Code Playgroud)
如果修改文件,然后切换到该文件已更改的分支,也可能会出现问题.你可能不得不做一些花哨的"跳过/取消"操作来解决这个问题.
从长远来看,您可能希望将"本地"更改分成第二个文件.例如,如果要更改的文件是配置文件,请创建一个您在存储库中检查的"默认"配置文件.然后,允许第二个"覆盖"配置文件是可选的,并将该文件放入您的.gitignore.
然后,在您的应用程序中,读取默认配置文件,然后检查覆盖文件是否存在.如果是,请将该数据与默认文件中的数据合并.
此示例适用于配置文件,但如果需要,您可以将该技术用于其他类型的覆盖.