我想做的事
我有一个包含敏感数据的文件,所以我不想将此文件的内容推送到远程服务器。
我做了什么?
为了实现这一点,我在文件为空时进行了提交,并将这个空文件推送到服务器(GitHub)。然后用敏感数据填充文件并应用git update-index --skip-worktree path/to/file
。但我没有做出任何承诺。
现在我正在尝试切换我的分支,但我收到了这个错误:
error: Your local changes to the following files would be overwritten by checkout:
path/to/file
Please, commit your changes or stash them before you can switch branches.
Aborting
为什么我使用skip-worktree
而不是assume-unchanged
?
我阅读了一些关于这个主题的 SO 问题,并找到了 Borealid 的答案。
--assume-unchanged 假定开发人员不应该更改文件。此标志旨在提高 SDK 等不更改文件夹的性能。
--skip-worktree 当您指示 git 不要碰特定文件时很有用,因为开发人员应该更改它。例如,如果上游的主存储库托管了一些生产就绪的配置文件,并且您不想意外提交对这些文件的更改,那么 --skip-worktree 正是您想要的。
在此之后,我找到了Jeff's question和VonC's answer。Jeff 的问题和我的差不多,我遵循了 VonC 的解决方案。但是,这对我不起作用。可能是因为 git 版本不同。因为那个问题来自 2012 年。我们与 VonC 进行了交谈,他说这是一个新问题,因为他不记得答案了。
我尝试将--assume-unchanged
和--skip-worktree
一起使用,以及软重置工作树。但什么都没有改变。
所以?
你能帮我解决我的问题吗?
谢谢你。