关于git:迁移GIT仓库并带有历史提交记录

39次阅读

共计 805 个字符,预计需要花费 3 分钟才能阅读完成。

迁徙 git 仓库

开发在很多时候,会遇到一个问题。GIT 仓库的治理,特地是仓库的迁徙。我须要保留已有的历史记录,而不是从新开发,重头再来。

咱们能够这样做:

应用 --mirror 模式会把本地的分支都克隆。

// 先用 --bare 克隆裸仓库
git clone git@gitee.com:xxx/testApp1.git --bare
// 进入 testApp1.git,这样就能够把所有分支都克隆到新仓库了
git push --mirror git@gitee.com:xxx/testApp2.git

咱们还能够这样做:

git remote add gitlab git@gitee.com:xxx/testApp2.git
git push gitlab
git checkout dev
git push gitlab
...

这样的办法是,把 testApp2 作为新增的近程仓库,而后应用 push 一次推送一个分支。这种形式的益处是:迁徙的 git 仓库,只需迁徙指定的分支。

迁徙 git 仓库子目录

下面的办法是整个仓库的迁徙,但如果只想迁徙 git 仓库的子目录,则能够应用 git subtree,比方想要把仓库目录thirdparty\telnetd 拆分进来作为一个新的库,并且还要带上她所有的历史提交记录。

首先,咱们同样须要新建一个新的空仓库(留神:不要带有任何初始化文件,包含 README.md)。

而后,到主仓库执行以下 git 命令,就能够看到 telnetd 仓库已有代码了。

git subtree push --prefix=thirdparty/telnetd git@gitee.com:components/telnetd.git master

这样,就实现子目录的迁徙啦,就是有个问题,好慢~

关注 && 分割

gitee:https://gitee.com/cmcc-oneos/OneOS-Lite

docs:https://oneos-lite.com/

公众号:CMCC-OneOS

正文完
 0