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


369

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



在撰写问题时,请查看建议的相关问题-重复可能是前两个问题之一。
卡斯卡贝尔


Answers:


637
git rm --cached -r somedir

将分阶段删除目录,但不影响磁盘上的任何内容。这也适用于文件,例如:

git rm --cached somefile.ext

之后,您可能要添加somedir/或添加somefile.ext.gitignore文件中,以便git不会尝试将其添加回去。


24
然后将路径添加到.gitignore,这样git不会尝试在以后添加它。
grossvogel

3
当他从遥控器中拉出目录时,这会导致目录(文件中)被删除吗?
bstpierre

当他拉时不行。在拉取的自动合并过程中,文件将保持在本地删除状态。之后,推送将导致文件在服务器端被删除。
Walter Mundt 2010年

7
如果我有第三个遥控器会怎样?将来的拉动过程中会删除相应的文件吗?我问是因为我觉得这是一个很普遍的用例,例如,将一些文件检入到仓库中,稍后再意识到它们之间在远程控制器之间存在分歧,这是有充分的理由的,首先不应该在仓库中通过完全保留所有本地检出值,但从存储库中删除文件来解决此问题。
鲍比·杰克

6
对于单个文件,您可以执行git rm --cached path/to/file
Travis Reeder

3

我只是:

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

8
这不是一个好的解决方案-如果目录很大,该怎么办?
ioleo

可能需要使用git rm -r
–theUtherSide

1
@loostro只是不要将其移动到另一个块设备。最多的文件系统只会更新文件的
索引
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.