ChatGPT解决这个技术问题 Extra ChatGPT

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

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

请在编写您的问题时查看建议的相关问题 - 副本可能是前两个问题之一。

j
jamessan
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
J
Jeff

我只想:

将文件夹移出工作树

git rm 文件夹,提交更改

添加到 .gitignore(或 .git/info/excludes),提交更改

将文件夹移回


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