gpt4 book ai didi

git checkout 删除gitignore中的文件

转载 作者:IT王子 更新时间:2023-10-29 01:02:11 24 4
gpt4 key购买 nike

我不小心跟踪了 git 存储库中的工作区配置文件。为了解决这个问题,我 git rm --cached 这些文件并将它们添加到 .gitignore 文件中。

现在,每次我从存储库中 checkout 一个分支时,这些分支都会被删除。有什么办法可以避免这种情况吗?

最佳答案

问题是 git rm 提交出现在一些分支但不是全部,这意味着当你从一个仍然包含文件的分支切换到你 git rm'ed git 将正确 删除文件。你真正想要做的是从 git 的历史记录中删除文件,就好像它们从未存在过一样,遵循 this question。 .然而,你应该意识到这意味着重写存储库历史,所以一方面你必须在之后 git push --force,另一方面,你会让其他使用这个 repo 的人不高兴.

编辑 如果重写历史不可行,请确保在每个 现有分支上提交git rm --cached 操作。然而,如果您在删除之前检查修订,您仍然会遇到不愉快的重新删除。

总结:

  • 如果无法重写历史,则向每个分支提交 .gitignore + git rm --cached,但请记住检查任何以前的修订(例如通过标签)将 a) 产生有关 git 想要 check out 的现有未跟踪文件的错误,以及 b) 在切换回 HEAD 时再次删除这些文件
  • 如果您可能经常检查以前的修订(或一些意外提交的文件包含敏感数据),请重写历史以避免这种情况,但请注意,这会搞砸其他人的克隆

其实还有第三种可能:对于每个分支,创建一个新的分支,在其中重写历史,同时在原始版本上添加一个提交,删除所有文件(除了要忽略的文件!1) 添加一个高度可见的文件来解释困惑并要求用户从现在开始切换到重写的分支并删除他们未重写的分支的本地副本。


1这样做的原因是您不希望删除这些文件的其他用户版本,这些文件从一开始就不应该进行版本控制,因为人们永远不会期望切换回旧版本,这将永远不会产生“文件已存在”错误

关于git checkout 删除gitignore中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18464333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com