【发布时间】:2018-09-21 03:58:27
【问题描述】:
这里是 Git 新手,
如何从我的 Git 提交中删除文件的所有痕迹 - 例如在每个分支的任何地方删除它,本地和远程。
我看到的大多数文章和 Stack Overflow 的东西都表明这是一种可行的方法:
git filter-branch --tree-filter 'rm -f file_to_remove.py' HEAD
或
git filter-branch --tree-filter 'rm -f file_to_remove.py' ..HEAD
或
git filter-branch --force --tree-filter 'rm -f file_to_remove.py' -- --all
等等……
但是,我似乎无法工作。
一方面,我不断收到类似的错误,或者其他分支的另一个类似错误。
WARNING: Ref 'refs/remotes/origin/master' is unchanged"
我运行了最后一个,它经历了所有的修订,“看起来”像是在做某事,但后来我执行了......
git show <<REVISION_HASH_NUM>>:file_to_remove.py
这表明该文件仍然存在于提交历史记录中。同样,我对该文件的 Git 提交历史仍然存在于 TFS 中。
此外,还有 247 个提交和 16 个以上的其他开发人员使用此存储库。我无法对 Master 分支进行核攻击。
附:请不要向我推荐其他 Stack Overflow 帖子。我已经看过其中的大多数。另外,请不要说要改写我的问题。如果我有足够的知识来正确地提出问题,那么我就可以自己解决问题了。
提前致谢!
【问题讨论】:
-
欢迎您!正如现有答案所涵盖的那样,您无法在不引起大量问题的情况下重写远程历史记录 - 尽管如果您让团队中的每个人都与您合作,您可能会想出办法。但是,如果您可以提供一些有关您为什么要这样做的背景信息,那么有人可能会想出另一种方法来解决您的问题。我最初的问题是:1)这个文件是什么,为什么需要从历史记录中删除它? 2) 最初何时提交,有多少分支受到影响?