如何从本地git存储库和本地文件系统中删除文件,而不是从远程存储库中删除文件?

时间:2020-07-10 10:02:29

标签: git github git-commit git-remote

我一直试图从本地文件系统和本地git存储库中删除文件。

我正在使用git rm --cached <file name>

但是,每当我使用另一个文件并推送更改时,git也会从远程存储库中删除本地删除的文件。我希望文件保留在我的GitHub上。

我非常感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

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

这有点hacky,但是它允许您编辑(或删除)文件而不会显示更改。

稍后,您可以在需要时轻松还原此内容:

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

Git Docs

-[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时,它将始终以未分段的更改列出,如下图所示。

enter image description here