【发布时间】:2020-03-19 04:29:53
【问题描述】:
我有一些文件被排除在 git 更改之外。
我可以在本地更改文件,并且更改未显示在git status中。
但是,如果我尝试压缩分支或尝试签出到新分支,它不允许我这样做,而无需提交对这些文件的更改。
如何管理这些文件?
【问题讨论】:
标签: git
我有一些文件被排除在 git 更改之外。
我可以在本地更改文件,并且更改未显示在git status中。
但是,如果我尝试压缩分支或尝试签出到新分支,它不允许我这样做,而无需提交对这些文件的更改。
如何管理这些文件?
【问题讨论】:
标签: git
或者,尝试签出到新分支,它不允许我这样做,而不提交对这些文件的更改。
这就是为什么 Git 2.25.1(2020 年 2 月)现在包含在 git update-index 中的原因:
用户经常尝试使用假设不变和跳过工作树位来告诉 Git 忽略对跟踪文件的更改。
这不能按预期工作,因为 Git 仍可能检查工作树文件 执行某些操作时的索引。
一般来说,Git 不提供忽略跟踪文件更改的方法,因此建议使用替代解决方案。例如,如果您要更改的文件是某种配置文件,则存储库可以包含一个示例配置文件,然后可以将其复制到忽略的名称中并进行修改。
存储库甚至可以包含一个脚本,将示例文件视为模板,自动修改和复制它。
我引用了content filter driver based on smudge/clean scripts 中的最后一部分。
【讨论】:
我假设这些文件是一些配置文件。我建议采用以下方法。让 Git 知道这些变化:
git update-index --no-skip-worktree EACH_FILE
隐藏这些更改:
git stash save "Save local conf"
您现在可以毫无问题地签出到另一个分支,然后恢复您的本地更改:
git stash pop
您可以修复冲突(如果有),接受本地更改。
【讨论】: