如何从github repo中删除.svn文件夹

时间:2011-08-04 10:36:40

标签: github repository duplicate-removal

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

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

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

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

但如果我使用这个,我必须遵循这个程序超过10次(这样做是浪费时间)...所以我想知道任何人都可以告诉我如何删除所有{{1}整个回购中的文件夹一次性去?

3 个答案:

答案 0 :(得分:7)

我最近需要这样做,我只是从我的仓库的根目录运行以下命令:

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

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

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

答案 1 :(得分:4)

试试这个:

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

答案 2 :(得分: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循环中。