7

我已经使用 TortoiseSVN 提取了一个存储库。其中是.svn根目录和所有子文件夹中的文件夹。我创建了一个 github 存储库并推送了整个存储库。

问题是在我的本地副本中,我已经.svn从 repo 中删除了文件夹,然后提交了更改。它不会从以前版本的存储库中删除该文件夹...

我知道如何从这里从 github repo 中删除敏感数据:

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

但是如果我使用它,我必须遵循这个程序超过 10 次(这样做是浪费时间)......所以我想知道任何人都可以告诉我如何.svn从整个 repo 中删除所有文件夹单去?

4

3 回答 3

7

我最近需要这样做,我刚刚从我的 repo 的根目录中运行了以下命令:

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

这会递归搜索所有出现的 .svn 文件夹并递归删除它及其内容。--ignore-unmatch如果在存储库中找不到指定的文件,该参数可防止 git 阻塞。

接下来要做的当然是将 .svn 添加到您的 .gitnore 中,这样您就不会再次错误地开始跟踪这些文件。

于 2011-08-10T19:57:29.170 回答
5

尝试这个:

find . -type d -name .svn | xargs git rm -rf --ignore-unmatch
于 2012-12-04T11:51:43.483 回答
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 循环中。

于 2014-10-03T17:04:27.863 回答