我还在学习Git,我通过在我的仓库中添加一个包含许多大文件的目录来做一件蠢事。现在,我想从Git中删除该目录。我知道how to use gitignore,我知道how to remove a file from git but not from the local filesystem,但我也希望将目录(及其内容)从存储库的历史中删除。我在这里看到了一些类似的问题,但似乎没有一个问题与我的情况有关。特别是,我想在我的本地文件系统上保持目录不变。
我应该注意到,作为一个新的存储库,我还没有与其他用户分享这个,所以我现在不关心与其他用户有关的任何事情。
答案 0 :(得分:1)
有几种方法可以从Git中删除文件和目录历史记录:
git reset
使用适当的模式(硬,软,混合等)。git filter-branch
。可能有更多的方法(我需要更多考虑它)。你使用哪一个取决于你的情况。
假设您在最后一次(例如15次提交)中将目录添加到Git历史记录中,您可以使用交互式rebase。参见
如果目录之前添加了许多提交(超过100个),那么git filter-branch
可能是一个更好的选择,它将比一百个或更多的交互式rebase运行得更快,更方便使用提交。
确保复制目录及其内容并暂时将其保存在Git项目目录之外,然后再尝试将其从存储库历史记录中删除。然后再将目录移回。