Git 从repo中删除和取消跟踪文件,但将其保留在远程服务器上

Git 从repo中删除和取消跟踪文件,但将其保留在远程服务器上,git,Git,我做了一些搜索,但要么我不明白这到底是怎么回事,要么我没有找到我需要的 我有一个生产服务器和我的本地开发箱 到目前为止,git repo一直在跟踪一个目录,我不想再跟踪它了。我还想从repo中删除这些文件,因为它们不会被跟踪,只是使git repo比需要的更大 然而,我的理解是,如果我在本地访问一个git rm--cached,并更改我的.gitignore文件,当我拉下更新的repo时,它将删除远程服务器上的文件,这是我不想要的。我希望这些文件保持在生产状态,只是不再被跟踪,也不在回购协议中

我做了一些搜索,但要么我不明白这到底是怎么回事,要么我没有找到我需要的

我有一个生产服务器和我的本地开发箱

到目前为止,git repo一直在跟踪一个目录,我不想再跟踪它了。我还想从repo中删除这些文件,因为它们不会被跟踪,只是使git repo比需要的更大

然而,我的理解是,如果我在本地访问一个
git rm--cached
,并更改我的.gitignore文件,当我拉下更新的repo时,它将删除远程服务器上的文件,这是我不想要的。我希望这些文件保持在生产状态,只是不再被跟踪,也不在回购协议中

我想以前有人不得不这么做,我可能错过了一些明显的东西


我希望这是有道理的。谢谢

你理解得对。但是,您可以在生产服务器上复制这些文件,提取本地repo(这将擦除原始文件),然后从副本中恢复文件。在这之后,这些文件将不会被跟踪,因此(通常的)git操作(包括任何进一步的拉取)都不会覆盖或删除它们

编辑:


实际上,问题的作者提出了一个更好的解决方案,即在生产服务器上使用
git rm--cached
,这将从索引中删除文件(允许在下次提交时从存储库中删除),但将它们保留在工作树中

我知道这可能不是最好的选择,但如果我在生产环境中使用git rm--cached,并从那里而不是本地将其推上,会怎么样呢。这能让我不必复制目录并把它移回去吗?太棒了。我试试看,然后接受你的回答。