如何在不提交新更改的情况下取消跟踪/忽略旧分支中的文件夹?

时间:2013-05-10 23:05:29

标签: git git-branch gitignore

基本上我不小心将'files'文件夹添加到我的提交中,所以我有四个旧的开发分支,其中列出了'files'文件夹,包含所有文件。 我不想对这些分支进行任何其他更改,我只想删除文件夹,并保留其他所有内容。 我试着用谷歌搜索没有运气? 我假设我错过了一些简单的东西,所以任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:4)

您是否只想将其从下次提交中删除,或者将其从项目历史中删除?

git rm BAD_DIRECTORY && git commit -a会做前者。如果您公开共享此存储库,则应使用此方法,因为重写历史记录将从您的存储库中取消同步其他存储库。

要执行后者,请使用git filter-branch。它通过在历史记录中的每个状态(提交)中对项目应用一系列过滤器(命令)来重写历史记录。对于您的用例,您可以使用以下内容:

git filter-branch --index-filter "git rm --cached --ignore-unmatch BAD_DIRECTORY"

通过使用--index-filter,您可以避免在每次提交时进行结帐,从而节省一些时间。有关更多信息,请查看手册页。如果在特定提交时不存在BAD_DIRECTORY,则将--ignore-unmatch添加到git rm会使其失败。