git - 忽略对跟踪文件的更改

标签 git file ignore

我只想更改跟踪文件以用于开发,但要保持跟踪版本不变。

这个建议的大多数“解决方案”

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/

相关文章:

Git 忽略已提交的文件

git - 如何忽略 NetBeans merge 工具中的空格

git - 如何将 Docker 构建的上下文定义为本地分支之一上的特定提交?

linux - 检测代码是否读取了指定的输入文件

windows - Windows + NTFS 中的文件访问时间

java - 奇怪的路径会导致文件系统结构错误吗?

git - 如何向 .gitignore 添加一些内容以使匹配不递归?

git - 当 rebase 需要 merge 时应采取的正确步骤

git - 零停机时间部署到 azure 作为 docker 容器

git - 克隆 git 存储库的偷偷摸摸的方法?