暂时隐藏git中的一些更改的文件

时间:2017-07-10 07:40:00

标签: git

每当我执行工作任务时,我在git中创建一个本地分支,然后我需要在实际工作之前修改一堆配置文件(大多数包含连接字符串到数据库)以设置到我的本地环境。这些更改我不想在完成任务后推送到存储库。

实际上,我希望在查看更改的文件(git status)时过滤掉它们。

我可以首先提交到我的本地分支并在推送之前恢复它。但是我有机会忘记它。有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

要暂时忽略特定文件中的更改,您可以执行以下操作:

git update-index --assume-unchanged <file>

如果要再次跟踪更改,只需运行:

git update-index --no-assume-unchanged <file>

答案 1 :(得分:3)

最推荐的解决方案是使用:

git update-index --skip-worktree <file>

Documentation

  

<强> - [无糖]跳到-worktree

     

如果指定了其中一个标志,则不会更新为路径记录的对象名称。相反,这些选项   设置和取消设置路径的“skip-worktree”位。见部分   下面是“Skip-worktree bit”以获取更多信息。

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>