从存储库中删除文件但将其保留在本地
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,而不是从字面上移动整个目录以上是关于从存储库中删除文件但将其保留在本地的主要内容,如果未能解决你的问题,请参考以下文章
sh 还原对已修改文件的更改/删除未跟踪文件/从存储库中删除文件,但保留文件的本地版本混帐