我只想更改跟踪文件以用于开发,但要保持跟踪版本不变。
这个建议的大多数“解决方案”
git update-index --assume-unchanged
但这完全没有用,因为文件仍然会被 check out 或重置更改。是否有更好的解决方案可以在 checkout 和重置命令中幸存下来?
最佳答案
快速修复
这就是我认为您正在尝试做的,更改文件,但在提交时忽略它。
git update-index --skip-worktree my-file
这是关于 difference between assume-unchanged
and skip-worktree
的一个很好的答案.
如果您尝试将更改 merge 到 my-file
中,Git 仍会发出警告。然后你将不得不“取消跳过”文件, merge 它并“重新跳过”它。
git update-index --no-skip-worktree my-file
# merge here
git update-index --skip-worktree my-file
如果您修改文件,然后切换到该文件已更改的分支,也可能会出现问题。您可能必须执行一些奇特的“跳过/取消跳过”操作才能解决这个问题。
长期修复
从长远来看,您可能希望将“本地”更改分离到第二个文件中。例如,如果您要更改的文件是一个配置文件,请创建一个您 checkin 存储库的“默认”配置文件。然后,允许第二个可选的“覆盖”配置文件并将该文件放入您的 .gitignore
。
然后,在您的应用程序中,读取默认配置文件,然后检查覆盖文件是否存在。如果是,则将该数据与默认文件中的数据 merge 。
此示例适用于配置文件,但如果需要,您可以将该技术用于其他类型的覆盖。
关于git - 忽略对跟踪文件的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32251037/