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

306 天前
 amiwrong123

A 仓库的某个分支,是我想要的。想把这个分支迁移到 一个全新的空白的 B 仓库里。

https://blog.csdn.net/xiaozhang_man/article/details/121144024

我是按照这个博客的方法进行的。

但因为 A 仓库的这个分支有子仓库,所以在拉取 A 仓库时,我必须加--recursive 参数。

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

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

你这个方法,不会是这样的吧:子仓库的东西确实会在 B 仓库里,但是在 B 仓库里 不再是子仓库的形式了。或者说,子仓库的东西就不能再更新了。
amiwrong123
306 天前
@nothingistrue #5
“就能清洗当前分支的全部历史。然后把其他分支、标签都删除了”这些不会影响到 A 仓库的吗?或者说,这些操作 只是在操作本地的分支,没有影响到远端的东西。

网上搜了下,是这个博客的步骤吗: https://blog.csdn.net/Tomoe20/article/details/135132893

其中这步:git remote add last-repo <旧仓库地址> 有点难理解。在一个仓库里面,还可以设置另一个仓库的 url 呢

( PS:git 比较菜,还是要多看看你的发的 gitbook 才行呢,但还是想问)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1010703

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX