Git 删除过去大量提交中添加的文件

Git 删除过去大量提交中添加的文件,git,github,Git,Github,在过去的30-40次提交中,我包含了一个文件夹,我刚刚意识到我不应该这么做 我主要担心的是,当我将这些更改推送到Github时,由于这些文件的大小,这将需要一段时间 有没有办法从过去的提交中完全删除该文件夹(或某些文件?您可以在Git中通过交互式重新基址编辑历史记录。在引入文件夹之前,先确定第一次提交,然后git-rebase-i您可以通过交互式rebase在git中编辑历史记录。在引入文件夹和git-rebase-i之前,找出第一次提交,您可能最想使用git-filter-branch。Git

在过去的30-40次提交中,我包含了一个文件夹,我刚刚意识到我不应该这么做

我主要担心的是,当我将这些更改推送到Github时,由于这些文件的大小,这将需要一段时间


有没有办法从过去的提交中完全删除该文件夹(或某些文件?

您可以在Git中通过交互式重新基址编辑历史记录。在引入文件夹之前,先确定第一次提交,然后
git-rebase-i

您可以通过交互式rebase在git中编辑历史记录。在引入文件夹和
git-rebase-i

之前,找出第一次提交,您可能最想使用
git-filter-branch
。Github提供了一个相当好的教程来使用它

下面的一行应该可以做到这一点:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch -r <path>' --prune-empty -- --all
git筛选器分支--索引筛选器'git rm--cached--ignore unmatch-r'--prune empty--all

如果要删除文件夹,请确保使用的是
-r

您很可能要使用
git筛选器分支。Github提供了一个相当好的教程来使用它

下面的一行应该可以做到这一点:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch -r <path>' --prune-empty -- --all
git筛选器分支--索引筛选器'git rm--cached--ignore unmatch-r'--prune empty--all


如果要删除文件夹,请确保使用的是
-r

您可以使用git filter branch
git filter branch--index filter'git rm--cached--ignore unmatch YOURFOLDER'--prune empty--all
此命令将在所有提交过程中运行,删除您可以正常推送的文件夹,因为您还没有推送它。我经常使用这个命令。

您可以使用git filter branch
git filter branch--index filter'git rm--cached--ignore unmatch YOURFOLDER'--prune empty--all
这个命令将在所有提交中运行,删除您可以正常推送的文件夹,因为您还没有推送它。我经常使用这个命令。

你还没有推它,是吗?我想有人比我先回答:)另外,你可能想删除这篇文章的“cvs”标记,它与cvs完全没有关系。如果你关心空间,你也应该执行github教程中的清理和压缩命令。谢谢。我来看看。你还没有推它,是吗?我猜有人抢先回答了我:)另外,你可能想删除这篇文章的“cvs”标记,它与cvs根本没有关系。如果你关心空间,你也应该执行github教程中的清理和压缩命令。谢谢。我来看看。如果文件夹在许多提交中都发生了更改,那么使用交互式重基将是一个相当乏味的过程。为了从完整的历史记录中删除文件,过滤器分支是一个更好的选择(imo),我使用了
git-rebase-I
来更改提交的名称,合并提交。。。但是在这种情况下,它到底有什么帮助?@OscarMederos您也可以编辑提交(将“pick”更改为“edit”)以删除文件夹。如果文件夹在许多提交中发生了更改,那么使用交互式重基将是一个相当繁琐的过程。为了从完整的历史记录中删除文件,过滤器分支是一个更好的选择(imo),我使用了
git-rebase-I
来更改提交的名称,合并提交。。。但是在这种情况下,它究竟对我有什么帮助?@OscarMederos您也可以编辑提交(将“pick”更改为“edit”)以删除该文件夹。非常感谢。我现在就去看看,我会让你知道它是怎么回事!知道了。我对您的问题进行了编辑,以完全包含我运行的内容,这样用户就不必去Github找到答案了。非常感谢。我现在就去看看,我会让你知道它是怎么回事!知道了。我对您的问题进行了编辑,以完全包含我运行的内容,这样用户就不必去Github找到答案