我有一个包含敏感数据的文件,所以我不想将此文件的内容推送到远程服务器.
为了实现这一点,我在文件为空时进行了提交,并将此空文件推送到服务器(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
Run Code Online (Sandbox Code Playgroud)
skip-worktree
INSTEAD OF assume-unchanged
?我读了几个关于这个问题的SO问题,并找到了Borealid的答案.
--assume-unchanged假定开发人员不应更改文件.此标志用于提高SDK等不可更改文件夹的性能.
- 当你指示git不要触摸特定文件时, - skip-worktree非常有用,因为开发人员应该更改它.例如,如果主存储库上游托管了一些生产就绪配置文件,并且您不想意外地提交对这些文件的更改,那么--skip-worktree正是您想要的.
在此之后,我发现了Jeff的问题和VonC的回答.杰夫的问题与我的问题几乎相同,我遵循了VonC的解决方案.但是这对我不起作用.也许是因为git版本的差异.因为这个问题来自2012年.我们与VonC进行了交谈,他说这是一个新问题,因为他不记得答案了.
我试图使用--assume-unchanged
和--skip-worktree
在一起,软正在重置worktree.但没有改变.
你能帮我解决一下我的问题吗?
谢谢.
我有配置文件:conf/local.conf
我为其运行下一个命令:
git update-index --assume-unchanged local.conf
Run Code Online (Sandbox Code Playgroud)
直到我切换到另一个分支或拉取之前都可以。
如何保留--assume-unchanged
分支之间的标志?
UPD
一些即将发生的事情的例子:
$ git checkout 296-ToS-component
error: Your local changes to the following files would be overwritten by checkout:
conf/local.conf
Please commit your changes or stash them before you switch branches.
Aborting
$ git checkout -f 296-ToS-component
error: Entry 'conf/local.conf' not uptodate. Cannot merge.
Run Code Online (Sandbox Code Playgroud)
我希望它的工作原理如下:
我将一些本地配置保留在假设未更改的文件中。随着时间的推移,我创建了几个分支,并且假定未更改的文件在其间不断演变(添加更多本地配置)。如果我尝试签出较旧的分支,我会得到:
error: Your local changes to the following files would be overwritten by checkout:
<some assume-unchanged files>
Please, commit your changes or stash them before you can switch branches.
Run Code Online (Sandbox Code Playgroud)
我不想提交它们,也不能隐藏它们(即使使用 --include-untracked 选项):
$ git stash
No local changes to save
Run Code Online (Sandbox Code Playgroud)
有没有解决方案,或者有更好的工作流程来让本地更改保持未提交状态?
我自己使用 git 已经有一段时间了,现在正在为我们的团队设置一个 repo。我们开发了一个电子商务平台。
有一些目录和文件要忽略,例如上传目录和特定于环境的配置文件。
虽然配置文件在 .gitignore 上,但我想用--skip-worktree
或忽略上传目录--assume-unchanged
。
我的问题 - 我找不到明确的答案 - 是--assume-unchanged
or--skip-worktree
位是否会被推送到上游回购?
如果不是,那么确保 git 不会跨存储库的所有实例操作上传目录的内容的最佳方法是什么?