首页/ 填坑/ 文章详情

Git 平台搬迁,如何恢复项目Git的历史记录

Git 搬迁 恢复记录 离职 发布于 2021-04-22

Git 最初公司为了省钱,最大的资源利用,在旧领导的授意下,拿出台PC主机搭建Git的服务器。除了每次断电,Git服务器需要手动重启外,基本也没什么大毛病,忍忍还是能用的。几年时间,上传了很多的公司的重要项目,直到旧领导创业离职,紧接着维护公司Git平台的同事也相续离职。

新官上任三把火,老程序内部升迁,晋升为新的领导。曾经多次吐槽Git的他,获得了更多的权限,决定向公司申请新的Git平台。新的风向已来,Git大搬迁运动瞬间展开,除了将代码搬迁外,唯一要求:保留之前提交过的历史记录。

举个例子:现在有一个正在开发中的项目,旧平台Git项目叫 project,项目有着完整的代码与提交的历史记录,项目已存在本地;新平台Git项目叫 project,项目完全是空文件,没有任何代码与记录,尚未拉回本地。

由于Git项目名称一样,新平台拉回来之前,本地项目直接改名为new_project以示区分。在本地,旧平台项目名为 project,新平台项目名为 new_project,两个项目同时存放在一个目录下。

理清关系后,开始进入搬迁Git仓库:选择new_project文件夹,右键;快捷菜单选择Git bash here,进入Git命令模式。

Step 1:将project作为远程仓库,添加到new_project,设置别名为other。

GitAdministrator@20180316PC MINGW64 /d/phpStudy/WWW/new_project(develop)
$ git remote add other ../project/

Step 2:提取project仓库的数据拉回到本地仓库

GitAdministrator@20180316PC MINGW64 /d/phpStudy/WWW/new_project(develop)
$ git fetch other
warning: no common commits
remote: Counting objects: 689, done.
remote: Compressing objects: 100% (677/677), done.
remote: Total 689 (delta 289), reused 0 (delta 0)
Receiving objects: 100% (689/689), 460.00 KiB | 2.80 MiB/s, done.
Resolving deltas: 100% (289/289), done.
From ../project/
 * [new branch]      develop    -> other/develop
 * [new branch]      master     -> other/master

Step 3:将project的develop分支拖回到new_project,重新命名为project分支

GitAdministrator@20180316PC MINGW64 /d/phpStudy/WWW/new_project(develop)
$ git checkout -b project other/develop
Switched to a new branch 'project'
Branch 'project' set up to track remote branch 'develop' from 'other'.

Step 4:将new_project切换回develop分支

GitAdministrator@20180316PC MINGW64 /d/phpStudy/WWW/new_project(project)
$ git checkout develop
Switched to branch 'develop'

Step 5:将project合拼到new_project的develop分支

Git Administrator@20180316PC MINGW64 /d/phpStudy/WWW/new_project(develop)
$ git merge project --allow-unrelated-histories
Auto-merging .gitignore
CONFLICT (add/add): Merge conflict in .gitignore
Automatic merge failed; fix conflicts and then commit the result.

至此project已经完完整整迁移到了new_project,重新再次提交new_project,即可。

GitAdministrator@20180316PC MINGW64 /d/phpStudy/WWW/new_project(develop)
$ git fetch other

fatal: './project' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

在step 2有可能出现失败,由于程序还在开发中,程序还有编辑状态,Git检查文件没有推送完引起,直接再次推送,即可。

文章评论0 records

最新 最早

0

最新评论Latest comments

凡心的仙人凡心的仙人 03-18 14:35
谢谢你了!
rantrismrantrism 2023-04-03 11:27
您好~我是腾讯云开发者社区运营,关注了您分享的技术文章,觉得内容很棒,我们诚挚邀请您加入腾讯云自媒体分享计划。完整福利和申请地址请见:https://cloud.tencent.com/developer/support-plan 作者申
唐牛才是食神唐牛才是食神 2022-06-15 10:51
(*°▽°*)八(*°▽°*)♪,解决了
唐牛才是食神唐牛才是食神 2022-06-15 10:49
发现不得了的东西,今晚回去好好研究下...
胖螺胖螺 2022-02-04 00:58
( ゜- ゜)つロ 在写了在写了。看到也有些感慨。因为站长前年在我原博客的留言,让我毅然选择去深造,选择读研,曾经我想过挺多东西的,还是自己本专业的适合我自己。在这先表达感谢。新年快乐!