[英]Ignore changes to a tracked file
我只想为开发更改跟踪文件,但保持跟踪版本不变。
这个建议的大多数“解决方案”
git update-index --assume-unchanged
但这完全没用,因为文件仍然会通过结帐或重置而更改。 是否有更好的解决方案可以在结帐和重置命令中幸存下来?
这就是我认为您正在尝试做的事情,更改文件,但在提交时忽略它。
git update-index --skip-worktree my-file
这是关于assume-unchanged
和skip-worktree
之间差异的一个很好的答案。
如果您尝试将更改合并到my-file
Git 仍会发出警告。 然后你将不得不“取消跳过”文件,合并它并“重新跳过”它。
git update-index --no-skip-worktree my-file
# merge here
git update-index --skip-worktree my-file
如果您修改文件,然后切换到该文件已更改的分支,也可能会出现问题。 您可能需要做一些奇特的“跳过/取消跳过”操作来解决这个问题。
从长远来看,您可能希望将“本地”更改分离到第二个文件中。 例如,如果您要更改的文件是配置文件,请创建一个“默认”配置文件,并将其签入存储库。 然后,允许第二个可选的“覆盖”配置文件并将该文件放入您的.gitignore
。
然后,在您的应用程序中,读取默认配置文件,然后检查覆盖文件是否存在。 如果是,则将该数据与来自默认文件的数据合并。
此示例适用于配置文件,但如果需要,您可以将该技术用于其他类型的覆盖。
由于在您的评论之一中您直接在master
分支中工作,因此真正要解决的问题是在master
工作。
你需要在 Git 中创建一个主题分支:
git checkout -b some_feature_or_bug_fix master
然后对配置文件进行必要的更改,并正常提交。
这里的好处是你不会影响master
文件。 如果您需要拉入更新的代码,只需git fetch
和git merge origin/master
到您的主题分支。 然后,您可以像正常的 Git 合并一样处理对配置文件的上游更改。
在将您的主题分支合并到master
之前,您可以进行交互式压缩以减少提交并将提交合并为一个漂亮、干净的提交。 或者执行git merge --squash
将您的主题分支合并到master
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.