【问题标题】:Git remove file from repo without deleting WHEN OTHERS PULLGit 从 repo 中删除文件而不删除 WHEN OTHERS PULL
【发布时间】:2019-10-04 13:50:28
【问题描述】:

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

我们想再次取消跟踪,但我们需要将 .idea 文件保留在每台本地计算机上。规范的建议是 git rm -r --cache .idea 然后推送到远程,但是虽然这会在运行命令的机器上留下 .idea 目录,但下次他们拉动时,.idea 仍会从其他机器上删除。在许多类似的问题中都提到了这一点,但仅在 cmets 等中有所提及,并且只有一系列骇人听闻的解决方法需要每个开发人员采取一些措施来避免删除。这对于一个大型或分散的团队来说是不可行的,并且在任何情况下都感觉不合适,因为我们想要操作的唯一更改是在 repo 历史记录上,而不是本地文件系统上。将 .idea 目录的跟踪状态恢复到原来的状态 - 未跟踪,git 不理会它。

实现这一目标的规范或最佳实践方法是什么?

【问题讨论】:

  • 如果您使用的是 Maven,请告诉人们他们需要重新导入项目。完毕。 (这也是分支和同行评审的目的)
  • @ThorbjørnRavnAndersen “告诉人们他们需要......” - 根据我试图避免这种情况的问题
  • 他们已经推送了本地副本了吗?
  • 你知道你可以强制推送到更早的提交吗?
  • @ThorbjørnRavnAndersen 我没有考虑过(仅初级 git 用户),但如果您建议将历史回滚到错误提交之前,我不知道错误已经存在多长时间从那时起,此 repo 和其他更改已提交给分支。不过感谢您的建议

标签: git gitignore git-rm


【解决方案1】:

正如@ThorbjørnRavnAndersen 所说,提交和跟踪文件的位置可以恢复。我对恢复提交不是很有经验,所以我会有点害怕,如果在那之后有几个重要的提交。然而,有经验的 git 用户不应该有这个问题。因为我不是我会XD。 当我将许多文件上传到我不想跟踪的存储库时(由于 gitignore 处理不佳),我成功地做的一件事是使用已删除的文件和更新的 .gitignore 为存储库设置新的原点,然后设置新的上游来源到您的本地分支,因此您的本地仓库现在将根据新来源进行跟踪。综上所述,mi point就是根据你想要的状态将repo上传到云端,并设置新的origin。找到链接:

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

也许它是一个菜鸟解决方案,但对我来说就像一个魅力,因为项目不大,修复不是很耗时,此外,如果可能有任何问题,您可以使用原始 repo/origin作为备份。 希望有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-29
    • 2018-02-02
    • 2013-05-25
    • 2012-05-22
    • 2014-09-06
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多