我想要做什么
我有一个包含敏感数据的文件,所以我不想将该文件的内容推送到远程服务器。
我是怎么做的?
为了实现这一点,当文件为空时,我进行了一次提交,并将此空文件推送到服务器(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
?
我阅读了一些有关此主题的stackoverflow的问题,并找到了Borealid的回答。
--assume-unchanged 假定开发人员不应更改文件。此标志旨在提高不需要更改的sdk等文件夹的性能。
--skip-worktree 对于你指示git永远不处理特定文件很有用,因为开发人员应该更改它。例如,如果主存储库上游托管某些生产就绪的配置文件,而您不想意外提交对这些文件的更改,则正是--skip-worktree所需要的。
在这之后,我发现Jeff的问题和VonC的答案。 Jeff的问题几乎与我的问题相同,我按照VonC的解决方案尝试解决了问题。 但对我来说并没有起作用。 可能是因为git版本差异造成的,因为那个问题是来自2012年的。 我们与VonC交谈,他说要提出一个新问题,因为他无法记住答案。
我尝试使用--assume-unchanged
和--skip-worktree
一起,并对工作树进行软重置。 但没有任何变化。
有什么建议吗?
你能帮我解决我的问题吗?
谢谢。
path/to/file
在你的分支之间是否完全相同吗?请执行git diff branch1..branch2 -- path/to/file
。 - Justin Howard