Git Filter-branch不会删除文件夹吗?

3
我想把我的大部分代码库从自己的SVN服务器转移到托管在远程Git服务器上。我找到了几个命令,并将它们转换为自动化shell脚本,以便更顺畅地转换这些代码库。
不过,现在当我尝试克隆Git代码库进行工作时,托管服务器会出现unexpected EOF错误。一些大型代码库(2-10 GB)需要太长时间来导入...
因此,我尝试使用filter-branch删除文件夹以减小代码库的大小,通过删除最大的文件夹和图形源文件。这在我的计算机上都可以正常运行,但是当我想要上传到Git服务器时(等待了很长时间后),我发现目录和文件仍然存在!

我尝试使用git repack来确保包也更小,并将存储库克隆到一个新文件夹中,这解决了我的问题,但是当我继续使用git branch -m trunk master时,出现了错误,例如:

1: error: refname refs/heads/trunk not found
2: fatal: Branch rename failed
3: error: src refspec master does not match any.
4: error: failed to push some refs to 'ssh://git@bitbucket.org/{username}/{projectname}'

我为错误#3创建了一个新的提交,如主题回复中所述,但是我完全没有进展... 我意识到这些错误都彼此相关,但我不明白为什么(本地)克隆存储库中没有主干,或者为什么我突然有了几个分支,而在其他存储库中只有一个master分支...
* [new branch]      origin/HEAD -> origin/HEAD
* [new branch]      origin/master -> origin/master

为了讲述很多次尝试的长故事更简短:
  1. 我使用所有历史记录对一个新文件夹(projectname)进行git svn克隆 --no-metadata -A -stdLayout

    1b.我删除所有过时的文件夹和文件(根据仓库定义)

  2. 我在一个新的代码库中使用git init(让我们称其为projectname-copy)
  3. 我将一切推到一个我使用git init --bare bare-repo创建的bare仓库中
  4. 我尝试上传到托管服务器,但我收到错误或没有变化
现在我的问题是:有人有缩小存储库大小(本地和远程)并使其能够上传到我的git服务器的解决方案吗?
PS:我想你会知道,写命令行不是我的强项,请不要把我打死 :-)
1个回答

1
没关系,我自己解决了。
我创建了一个本地克隆,执行了git repack -A -d,然后执行了git gc --prune=now && git gc --prune=now --aggressive,最后创建了一个裸仓库。
我必须检查分支是否正确,如果不正确,我使用git branch -m [branchname]进行更改,然后就可以上传到我的托管服务。
想和大家分享一下 :-)

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