手动迁移SVN-GIT后,如何获取SVN Trunk历史记录?
完全可行,且可以通过重新迁移Trunk来获取历史记录
当然能搞定!你之前手动复制文件夹的方式相当于只把当前状态传到了Git,没带历史,现在要补全Trunk的提交记录,完全可以替换掉现有仓库内容,重新用git svn工具迁移Trunk的完整历史。下面是具体操作步骤:
步骤1:备份现有本地仓库(可选但推荐)
先把你当前本地的Git仓库整个复制一份到其他目录,万一操作失误还能快速恢复,稳一点总没错。
步骤2:用git svn克隆SVN Trunk的完整历史
打开终端,运行以下命令,只拉取SVN的Trunk部分及所有提交历史:
git svn clone --trunk=/trunk <你的SVN仓库完整URL>
如果需要把SVN里的用户名映射成Git规范的「姓名 <邮箱>」格式(让提交历史更易读),可以先创建一个authors.txt文件,格式如下:
svn_username1 = Git User Name1 <user1@example.com> svn_username2 = Git User Name2 <user2@example.com>
然后克隆时加上参数:
git svn clone --trunk=/trunk --authors-file=authors.txt <你的SVN仓库完整URL>
步骤3:关联Bitbucket远程仓库
进入刚克隆的新本地仓库目录,把Bitbucket仓库设为远程:
git remote add origin <你的Bitbucket仓库URL>
如果之前已经关联过其他远程,也可以用这个命令更新远程地址:
git remote set-url origin <你的Bitbucket仓库URL>
步骤4:强制推送覆盖Bitbucket现有内容
因为你本地新迁移的仓库和Bitbucket上的现有仓库没有共同提交祖先,所以需要用强制推送来替换远程的无历史分支:
git push -f origin main # 如果Bitbucket默认分支是master,就换成master
验证结果
推送完成后,打开Bitbucket仓库页面,就能看到Trunk的所有提交历史了,之前的无历史内容会被完全替换。
注意事项
- 强制推送会覆盖远程仓库的现有内容,确保你确实要丢弃之前的无历史版本再操作。
- 如果SVN Trunk有大量历史提交,克隆过程可能需要一点时间,耐心等待即可。
内容的提问来源于stack exchange,提问作者Tyson
相关产品推荐
相关产品推荐

