上一篇
浏览器主页被修改,唯有魔法对付魔法
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检查文件没有推送完引起,直接再次推送,即可。
最新评论Latest comments