IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git仓库迁移保留commit -> 正文阅读

[开发工具]Git仓库迁移保留commit

# 仓库迁移问题记录

## 参考链接

[使用git filter-repo](https://www.vicw.com/groups/code_monkey/topics/362)

[删除git记录中的大文件](http://www.hollischuang.com/archives/1708)

[彻底删除git中的大文件](https://www.jianshu.com/p/fe3023bdc825)

[git目录下object文件过大清理](https://blog.csdn.net/cysear/article/details/102823671)


?

## 仓库带commit记录迁移

case如下:

有2个git仓库:repo1、repo2;

想将repo1中的文件移入repo2;

repo1的历史日志要保留。

大致思路是伪造远程的repo1仓库为repo2的一个分支,然后合并进来;

若是文件有冲突、或要建立子目录,建议在repo1中先解决,再进行如上操作。

1. 将repo1作为远程仓库,添加到repo2中,设置别名为other

[jot@myhost repo2]$ git remote add other ../repo1/

2. 从repo1仓库中抓取数据到本仓库

[jot@myhost repo2]$ git fetch other

3. 将repo1仓库抓取的master分支作为新分支checkout到本地,新分支名设定为repo1

[jot@myhost repo2]$ git checkout -b repo1 other/master

4. 切换回repo2的master分支

[jot@myhost repo2]$ git checkout master

Switched to branch 'master'

5. 将repo1合并入master分支

[jot@myhost repo2]$ git merge repo1

merge过程中解决冲突后使用git merge --continue 继续

## 清理大文件记录

1. 识别出最大的三个文件

git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -n | tail -3

git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"

2. 查询大文件的文件名

git rev-list --objects --all | grep 829b9d04b876f058b56849f7296c270a12f3ce04

3. 将该文件从历史记录的所有 tree 中移除

git filter-repo --invert-paths --path "path_to_filename_needs_to_removed"

4. 清理和回收空间(**可省略**)

虽然上面我们已经删除了文件, 但是我们的repo里面仍然保留了这些objects, 等待垃圾回收(GC), 所以我们要用命令彻底清除它, 并收回空间,命令如下:

rm -rf .git/refs/original/

git reflog expire --expire=now --all

git gc --prune=now

至此,我们已经彻底的删除了我们不想要的文件。

5. 推送修改后的repo

以强制覆盖的方式推送你的repo, 命令如下:

git push --force


?

## 使用到的指令

### git

git submodule remove <name>

git remote add <name> <url>

git filter-repo --invert-paths

git merge --allow-unrelated-histories

git cherrypick

git verify-pack -v

git checkout -b <branch_name> <remote_branch>

git count-objects -v

### bash

du -d 1 -h

sort -k <index> -n

tail -<index>

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-23 12:42:09  更:2021-10-23 12:43:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:22:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码