跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • git 分离子文件夹导致的问题
未分類
29 12 月 2020

git 分离子文件夹导致的问题

git 分离子文件夹导致的问题

資深大佬 : JCZ2MkKb5S8ZX9pq 0

  • 有一个项目文件夹 Parent,其中有一个 child 文件夹。Parent 已经历过多次 commit,希望分离 child 为孤立的 git 。

  • 使用的方法是:

    • 复制 Parent 为副本
    • 在副本内过滤 git filter-branch –prune-empty –subdirectory-filter child
    • 这样获得的 child 看上去是对的
    • 再去 parent 里 ignore 掉 child 就好了
  • 但是隔了好久,发现有问题。因为 Parent 之前 commit 多次,而且有误操作,commit 了大文件进去。child 只有 20M,git 有 200M+。用了官方推荐的 BFG,的确能删除大文件,缩减到 100M,但还是很大。

  • 猜测可能是 filter 的问题,child 以外的子文件夹的 git 记录还在,虽然没有大文件,但也积少成多。

提问

  • 现在还有没有办法理清 child 的 commit,使其摆脱 parent 的遗毒。

  • 用 BFG 能看到的那些大文件,直接用 git log 是看不到的,都是 child 目录以外的内容。child 的 git log 是干净的。但那些属于 parent 的记忆应该还保留在某处,怎么查看呢?

大佬有話說 (9)

  • 資深大佬 : blakejia

    git submodule?

  • 主 資深大佬 : JCZ2MkKb5S8ZX9pq

    @blakejia 现在已经不是拆分的问题了,是整理既有的 git 历史记录的问题。

  • 資深大佬 : favourstreet

    如果主以为不该存在的文件实际上却是可达的,git 说什么也不会替你删除。如果是不可达的( unreachable, dangling ),git 不会自动删除还未过一个月期限和已经打包进 pack 的 object,所以,git reflog expire –expire=now –all ; git gc –prune=now ; git repack -a -d 来一套

  • 主 資深大佬 : JCZ2MkKb5S8ZX9pq

    @favourstreet 应该是远超一个月了,要不是用了 BFG,我都不知道以前竟然还把 pdf 和 psd 也 commit 了。

    现在从 git log 或者各个 gui 看,都只能看到 filter 的结果,也就是包含我目前目录的一些 commit 。
    请问具体我怎么能看到其他的内容呢?我 git 就用些基础功能,不太熟悉,请赐教。

  • 資深大佬 : codehz

    (要不你去.git/objects 里找找大文件?然后 git cat-file 的方式看看是啥内容

  • 資深大佬 : favourstreet

    @JCZ2MkKb5S8ZX9pq 我只能说从主的措辞来看 BFG 帮主看到了文件名,这意味着那些文件仍在 git 管理之下,主最好检查一下当初 subdirectory-filter 是否漏了什么,比如漏了 branch 或 tag 之类的 refs

  • 資深大佬 : SoloCompany

    用了 BFG 之后, BFG 的源文件也需要使用 filter-branch 删掉啊

  • 主 資深大佬 : JCZ2MkKb5S8ZX9pq

    @codehz

    的确大文件就是 objects 里,我不知道怎么看它到底是啥,原本是一整个 200M 的。我去搜下你说的这个命令。

  • 資深大佬 : newdongyuwei

    推荐试试 git-filter-repo: https://github.com/newren/git-filter-repo

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具