Git从存储库中删除文件,而不会在其他人拉动时删除

时间:2019-10-04 13:50:28

标签: git gitignore git-rm

我们团队中的每个开发人员在其本地工作副本的根目录中都有一个.idea文件。有人在全局.gitignore中没有它(并且在其他.gitignores中也没有),因此他们不小心将其提交给了我们的远程仓库。现在正在跟踪。

我们想再次取消跟踪,但我们需要将.idea文件保留在每个本地计算机上。规范的建议是git rm -r --cache .idea,然后将其推送到远程,但是尽管这会将.idea目录保留在运行该命令的机器上,但是当其他人将其拉入时,.idea仍将从其他机器中删除。在许多类似的问题中都提到了此问题,但仅在注释等中提到过,并且只有一系列骇人的解决方法,要求每个开发人员都采取一些措施来避免删除。这对于庞大的团队或分散的团队而言是不可行的,并且在任何情况下都感到不合适,因为我们要采取的 only 更改是针对存储库历史记录,而不是本地文件系统。将.idea目录的跟踪状态放回原来的状态-未跟踪,而git则将其保留。

达到此目的的规范方法或最佳实践是什么?

1 个答案:

答案 0 :(得分:0)

提交和跟踪文件的位置可以恢复为@ThorbjørnRavnAndersen所说的。我对还原提交的经验不是很丰富,因此我会对此感到有些害怕,如果在此之后有几个重要的提交,则会更加恐惧。但是,经验丰富的git用户应该不会对此感到困扰。因为我不是XD。 当我将许多文件上传到我不想跟踪的文件时(由于不良的gitignore处理),我成功地做的一件事是使用删除的文件和更新的.gitignore为文件库设置了一个新的原点,然后设置新的本地分支的上游原始资源,因此现在将针对新的原始资源跟踪本地仓库。概括起来,mi点是根据您想要的状态将存储库上传到云中并设置新的来源。找到链接:

https://help.github.com/en/articles/changing-a-remotes-url

也许是一个新手解决方案,但是对我来说,它就像一个魅力,而且由于该项目规模不大,因此修复不是很费时,而且,如果有任何问题,您可以使用原始的仓库/源作为备份。 希望有帮助