首页/ 填坑/ 文章详情

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

Git 搬迁 恢复记录 离职 发布于 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

HentaiCatHentaiCat 2020-12-30 10:22
考科目二全程很紧张,考了三次才过,有次侧方入库直接pass,100分扣完,呜呜呜~
猫猫酱猫猫酱 2020-11-12 10:56
一入多肉深似海,说多都是泪
soulkunsoulkun 2020-11-05 15:54
IconFont的图标真的很好用!!!
无限链霉球菌无限链霉球菌 2020-11-03 11:41
药店,了解一下(`・ω・´)
HentaiCatHentaiCat 2020-11-02 15:28
(ಡωಡ)很实用,直接拿走...