每当我执行工作任务时,我在git中创建一个本地分支,然后我需要在实际工作之前修改一堆配置文件(大多数包含连接字符串到数据库)以设置到我的本地环境。这些更改我不想在完成任务后推送到存储库。
实际上,我希望在查看更改的文件(git status
)时过滤掉它们。
我可以首先提交到我的本地分支并在推送之前恢复它。但是我有机会忘记它。有更好的方法吗?
答案 0 :(得分:3)
要暂时忽略特定文件中的更改,您可以执行以下操作:
git update-index --assume-unchanged <file>
如果要再次跟踪更改,只需运行:
git update-index --no-assume-unchanged <file>
答案 1 :(得分:3)
最推荐的解决方案是使用:
git update-index --skip-worktree <file>
<强> - [无糖]跳到-worktree 强>
如果指定了其中一个标志,则不会更新为路径记录的对象名称。相反,这些选项 设置和取消设置路径的“skip-worktree”位。见部分 下面是“Skip-worktree bit”以获取更多信息。
跳过工作树位
Skip-worktree位可以在一个(长)句子中定义:当读取一个条目时,如果它被标记为skip-worktree,那么Git假装它的工作目录版本是最新的,而是读取索引版本。 / p>
详细说明,“阅读”意味着检查文件是否存在,读取文件属性或文件内容。工作目录版本可能存在或不存在。如果存在,其内容可能与索引版本匹配。写入不受此位影响,内容安全仍然是第一优先。请注意,Git可以更新工作目录文件,标记为skip-worktree,如果安全的话(即工作目录版本与索引版本匹配)
虽然这个位看起来类似于假设未改变的位,但它的目标与假设未改变的位不同。当两者都设置时,Skip-worktree也优先于假设未更改的位。
--assume-unchanged
标志用于提高性能,而--skip-worktree
用于更改文件并希望git无论如何都跳过它的情况。
要撤消,请使用:
git update-index --no-skip-worktree <file>