如何从GitHub仓库中移除.svn文件夹

7
我使用TortoiseSVN拉取了一个仓库,其中包括根目录和所有子目录中的 .svn 文件夹。我创建了一个github仓库,并将整个仓库推送到github。
问题是,在我的本地副本中,我已经从仓库中删除了 .svn 文件夹,然后提交了更改。但这不会从先前版本的仓库中删除该文件夹...
我知道如何从此处从github仓库中删除敏感数据:

http://help.github.com/remove-sensitive-data/

但是如果我使用这个方法,我需要重复进行十多次(这样做太浪费时间了)...所以我想知道有没有人能告诉我如何一次性删除整个仓库中的所有.svn文件夹?

3个回答

7

最近我需要做这个,我只需从我的存储库根目录运行以下命令:

 find . -name '.svn' | xargs git rm -rf --ignore-unmatch

这将递归地搜索所有出现的 .svn 文件夹并递归地删除它及其内容。参数 --ignore-unmatch 防止 git 在仓库中找不到指定文件时出错。
当然,下一步要做的是将 .svn 添加到你的 .gitignore 中,以便你不会再次错误地跟踪这些文件。

5

试试这个:

find . -type d -name .svn | xargs git rm -rf --ignore-unmatch

0

我最近在我的Windows机器上不得不这样做。这里是相应的PowerShell命令。可能有更好的方法,但我在使用PS时相当笨拙:

gci -Recurse -filter ".svn" | ?{ $_.PSIsContainer } | Select-Object FullName | %{ git rm -rf --ignore-unmatch $_.FullName }

GCI (Get-Child-Item) 将查找所有名为 ".svn" 的文件,PSIsContainer 用于检查是否为目录,Select-Object 应该只获取 FullName 属性,然后 git rm -rf 命令放置在 foreach 循环中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接