用删除.git 文件夹的方式 迁移仓库,如果 A 仓库有子仓库 该咋做?

查看 61|回复 5
作者:amiwrong123   
A 仓库的某个分支,是我想要的。想把这个分支迁移到 一个全新的空白的 B 仓库里。
https://blog.csdn.net/xiaozhang_man/article/details/121144024
我是按照这个博客的方法进行的。
但因为 A 仓库的这个分支有子仓库,所以在拉取 A 仓库时,我必须加--recursive 参数。
  • 然后删除.git 文件夹
  • git init
  • 尝试初始化子仓库,此时有点问题。.gitmoudles 文件,和那个子仓库(假设叫 ygh)的文件夹已经存在了。我以为直接执行:git submodule add url_of_ygh ygh就可以,结果提示 ygh already exiest and is not a valid git repo 。
  • 最后只好用笨方法,现手动删掉掉 ygh 文件夹,然后再执行git submodule add url_of_ygh ygh,此时 git status ,能看到.gitmoudles 文件和 ygh@rf43434 都在暂存区了。
  • 执行 git add . 添加其他所有文件
  • 执行 git commit -m "自定义注释"
  • git remote add origin B 仓库地址
  • git push -u origin master

    我想知道,关于子仓库的处理,我这里有更好的办法吗?因为我还需要手动删除

    git, ygh, 仓库, add

  • breadykidliu   
    你删除了 git 文件夹,仓库的历史提交记录不是全没了吗?!这算什么迁移
    amiwrong123
    OP
      
    @breadykidliu #1
    额,此时我的目的是 只想要代码,不想要那些 commit 信息。
    vueli   
    我做过这种迁移的,A 仓库 clone 下来的时候 git submodule init && git submodule update 可以把子仓库更新过来,这样所有文件都在了,直接把文件拿过去就行了啊。 我前端是这样做的
    nothingistrue   
    首先,把 git-book 看熟悉了: https://git-scm.com/book/zh/v2
    nothingistrue   
    你其实只需要 git rebase -i 一个命令,就能清洗当前分支的全部历史。然后把其他分支、标签都删除了,再推送到一个空白仓库中。这样你就能完美把别人的一个分支迁移到自己的仓库中了。当然里面还隐藏了一个作者时间,不过这个也能改,稍微有点高级就不简单说了。
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部