从存储库中删除文件但将其保留在本地

Posted

技术标签:

【中文标题】从存储库中删除文件但将其保留在本地【英文标题】:Remove file from the repository but keep it locally 【发布时间】:2011-03-29 00:54:47 【问题描述】:

我想在远程存储库中删除一个文件夹。我想删除它,但请将文件夹保留在我的计算机中

【问题讨论】:

Git: Remove a file from the repository without deleting it from the local filesystem 的可能重复项 请在编写问题时查看建议的相关问题 - 重复的问题可能是前两个问题之一。 另一个副本:***.com/questions/1273108/… Remove a file from a Git repository without deleting it from the local filesystem的可能重复 【参考方案1】:
git rm --cached -r somedir

将暂存目录的删除,但不会触及磁盘上的任何内容。这也适用于文件,例如:

git rm --cached somefile.ext

之后,您可能希望将 somedir/somefile.ext 添加到您的 .gitignore 文件中,这样 git 就不会尝试将其添加回来。

【讨论】:

然后将路径添加到.gitignore,这样git就不会试图让你稍后添加它。 当他从远程拉取时,这会导致目录(文件在)被删除吗? 他拉的时候不行;在拉取的自动合并过程中,文件将保持在本地删除。之后,推送将导致文件在服务器端被删除。 如果我有第三个遥控器会怎样?相应的文件会在未来的 pull 中被删除吗?我问是因为我觉得这是一个很常见的用例,即将一些文件检查到 repo 中,稍后意识到它们在遥控器之间存在分歧,这是有充分理由的,并且一开始就不应该在 repo 中,想要通过保持所有本地结帐完全原样来解决这个问题,但从存储库中删除文件。 单个文件可以git rm --cached path/to/file【参考方案2】:

我只想:

将文件夹移出工作树 git rm文件夹,提交修改 添加到.gitignore(或.git/info/excludes),提交更改 将文件夹移回

【讨论】:

这不是一个好的解决方案 - 如果您有一个非常大的目录怎么办? 可能需要用到git rm -r @loostro 只是不要将其移动到另一个块设备。大多数文件系统只会更新文件的 inode,而不是从字面上移动整个目录

以上是关于从存储库中删除文件但将其保留在本地的主要内容,如果未能解决你的问题,请参考以下文章

删除 git repo 中的文件夹? [复制]

从 git 分支中删除文件但将其保留在另一个?

sh 还原对已修改文件的更改/删除未跟踪文件/从存储库中删除文件,但保留文件的本地版本混帐

git - 是不是可以从“git push”中排除文件,但将它们保存在本地存储库中?

从 SVN 存储库中删除文件而不删除本地副本

如何从 git bash 屏幕中删除文件并从存储库中删除该文件? [复制]