我在我的存储库中有一些文件应该被忽略,我将它们添加到.gitignore,但是,当然,它们不会从我的存储库中删除。
所以我的问题是,是否有一个神奇的命令或脚本使用过滤器分支,可以重写我的历史,并轻松删除所有这些文件?或者只是一个创建提交并删除它们的命令?
我在我的存储库中有一些文件应该被忽略,我将它们添加到.gitignore,但是,当然,它们不会从我的存储库中删除。
所以我的问题是,是否有一个神奇的命令或脚本使用过滤器分支,可以重写我的历史,并轻松删除所有这些文件?或者只是一个创建提交并删除它们的命令?
当前回答
由于.gitignore中的文件没有被跟踪,您可以使用git clean命令递归地删除不受版本控制的文件。
使用git clean -xdn执行一个演练,看看将删除什么。 然后使用git clean -xdf来执行它。
基本上,git clean -h或man git-clean(在unix中)将为您提供帮助。
注意,该命令还将删除暂存区域中不存在的新文件。
其他回答
当你将。gitignore模式添加到。gitignore后,git会忽略匹配的文件。
但是存储库中已经存在的文件仍然存在。
使用git rm files_ignored;Git提交-m 'rm no use files'删除被忽略的文件。
由于.gitignore中的文件没有被跟踪,您可以使用git clean命令递归地删除不受版本控制的文件。
使用git clean -xdn执行一个演练,看看将删除什么。 然后使用git clean -xdf来执行它。
基本上,git clean -h或man git-clean(在unix中)将为您提供帮助。
注意,该命令还将删除暂存区域中不存在的新文件。
通过使用sed操作.gitignore语句的输出,我做了一个非常简单的解决方案:
Cat .gitignore | sed '/^#。* / d ' | sed ' / ^ \ s *美元/ d ' | sed ' s / ^ / git rm - r / | bash
解释:
打印.gitignore文件 从打印中删除所有注释 删除所有空行 在行首添加'git rm -r ' 执行每一行。
在linux中,你可以使用这个命令:
例如,我想删除*.py~,所以我的命令应该是==>
找到。name "*.py~" -exec rm -f {} \;
Git rm——cached -r。 以递归方式删除所有缓存
Git添加。 添加所有未包含在.gitignore中的文件
你将不得不提交一些在文件系统上没有真正删除的已删除文件
使用一个命令就可以了 Git rm——cached -r。&& git添加。