我一直试图从本地文件系统和本地git存储库中删除文件。
我正在使用git rm --cached <file name>
但是,每当我使用另一个文件并推送更改时,git也会从远程存储库中删除本地删除的文件。我希望文件保留在我的GitHub上。
我非常感谢您的帮助。
答案 0 :(得分:1)
git update-index --skip-worktree <file name>
这有点hacky,但是它允许您编辑(或删除)文件而不会显示更改。
稍后,您可以在需要时轻松还原此内容:
git update-index --no-skip-worktree <file name>
-[no-] skip-worktree
当指定这些标志之一时,为路径记录的对象名称不会更新。而是使用这些选项设置和取消设置路径的“ skip-worktree”位。
跳过工作树位
可以在一个(长)句子中定义“跳过工作树”位:阅读条目时,如果将其标记为“跳过工作树”,则Git会假装其工作目录版本是最新的,而是读取索引版本。 / p>
答案 1 :(得分:0)
如果您需要本地安装的特定版本,而远程需要一个不同的版本,则仅使用git即可:创建两个分支。
另一种可能性是使用语言功能来避免包括部分代码。
对于C ++文件,这可能是文件中的#ifdef
(或#ifndef
)部分,并且是一个编译选项,您将在本地计算机上使用该选项来排除文件的内容。 / p>
答案 2 :(得分:0)
在本地删除文件并通过运行来更新索引(暂存区)时
git rm --cached <file name>
,删除操作将上演。
如果在运行git status
之后运行git rm --cached <file name>
,您将看到删除已准备好进行下一次提交。现在,如果您对其他文件进行更改并添加这些文件以进行提交,则删除仍会进行。当您最终提交并推送更改时,删除操作也会在远程进行。
但是,如果仍然要进行此操作,请不要执行删除操作。
请勿运行git rm --cached <file name>
。只需手动删除文件。这样就可以了。但是,当您运行git status
时,它将始终以未分段的更改列出,如下图所示。