찾다

 >  Q&A  >  본문

.git 文件太大时怎样处理

一个 repo 里有 .jar 之类文件, 从 Github 下载 tag 里的 .zip 文件大小有 8M,
然后我用 filter-branch --tree-filter 删除了相关目录, 但大小没减多少..
查看了一下, 整个 repo 特别是 .git/objects/ 文件太大, 总共 48M,
于是网上搜 git gc 命令的参数尝试性地弄了几个, 到了 37M, 主要是 .git/objects/pack/ 36M.
作为一个 JS 前端模块还是太大了. 其实太早的 commit 可以丢弃的.
我想删除重建 .git 用来打包是可以的,
但遇到这样的问题时大家会怎么处理来舍弃无用的历史和文件?

---------

更新:
关于去掉部分 commit, 换个说法,,
我去掉一部分文件和一部分文件相关的 commit, 但要求方便从官方版本 merge 更新
目的是保证我的 repo (不用于开发, 仅仅发布压缩代码) 小, 而更新能进行 merge.

PHPzPHPz2801일 전1046

모든 응답(7)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-04-21 11:20:47

    Cloning시 Depth를 다음과 같이 지정할 수 있는데, 1이면 가장 최근의 커밋만 Clone한다는 뜻이다.

    으아아아

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-21 11:20:47

    커밋 기록을 수정하려면 git rebase을 사용하세요.

    예를 들어 처음 두 커밋을 병합합니다: http://stackoverflow.com/questions/59...

    rebase을 잘 활용하세요. 특정 커밋을 삭제하는 것 외에도 한 번에 여러 기능이 포함된 커밋 로그를 분할하여 여러 커밋을 동일한 기능과 병합하여 코드 기반 기록을 깔끔하게 유지할 수도 있습니다. .

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-21 11:20:47

    Java로 만든 웹 프로젝트라면 SSH 등을 추가하면 그리 크지 않습니다.
    또는 모든 공용 jar을 제거하고 프로젝트에 직접 배치하지 않는 것을 고려할 수 있습니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-21 11:20:47

    .jar 파일은 분명히 자신의 프런트 엔드 코드에 속하지 않지만 타사 종속성에 속하므로 코드 베이스에 배치하면 안 됩니다. 프로젝트 초기 단계에서 스크립트를 사용하여 타사 종속성 버전을 관리하고 코드 베이스에서 .jar 파일을 제거하는 것이 좋습니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-21 11:20:47

    Git은 기록을 변경할 수 있습니다
    쓸모없는 기록을 로컬에서 병합한 다음 강제로 푸시할 수 있습니다

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-21 11:20:47

    .git은 모든 Git 커밋 내역 정보를 기록하는 로컬 창고입니다.
    복제 시 깊이를 지정하면 기록 커밋 정보가 너무 많이 다운로드되는 것을 방지할 수 있습니다.

    근데 게시할 때 어떻게 처리해야 하느냐는 질문인 것 같은데요,
    간단합니다. 게시할 때 .git 디렉터리를 삭제하면 됩니다.

    회신하다
    0
  • 黄舟

    黄舟2017-04-21 11:20:47

    git lfs 사용
    https://git-lfs.github.com/

    회신하다
    0
  • 취소회신하다