2011-11-28 4 views
7

(다양한 옵션) git gcgit repack을 사용한 후 커밋합니다. 은 모두 팩 파일에 나머지 또는 다른 팩 파일을 포함하고 싶습니다.힘내 : 모든 재 포장하는 방법 느슨한 난 여전히 느슨한 4825 <strong>폴더 <code>.git/objects</code>에서</strong> 커밋이

나는 커밋을 다시 작성 (수정 + 리베이스)하므로 많은 도달 할 수없는 커밋을 갖는 것이 정상입니다. 내 .gitconfig에는 오랜 시간 동안 reflog 및 도달 할 수없는 커밋을 유지하기위한 이러한 매개 변수가 포함되어 있습니다.

[gc] 
    reflogExpire = 300 days 
    reflogExpireUnreachable = 200 days 
    pruneExpire = 90 days 

만약 의미가 있지만 이미 필요하고 몇 달 전에 만들어진 커밋을 복구했는지 궁금 할 것입니다. 새로운 우선 순위 지점 집합에 대해 여러 달 동안 개발 한 후 더 낮은 우선 순위 지점으로 계속 진행합니다.

이 질문의 주된 이유는 git gui이 내가 여러 번 해본 내 데이터베이스를 압축하는 데 불만을 나타냅니다. 이러한 느슨한 커밋을 압축 할 수없는 경우이 "불만"은 git gui의 버그 일 수 있습니다.

+0

와우, 나는 사람들이 그 많은 느슨한 커밋들로 실제로 일할 수 있는지 전혀 몰랐다 – prusswan

+0

속임수/관련? http://stackoverflow.com/questions/3765234/listing-and-deleting-git-commits-that-are-under-no-branch-dangling – cregox

답변

1

git bundle은 포장 개체 (전화 fetch-pack)와 함께 사용하는 것을 고려하여 to bundle을 시도한 다음 Repo를 복제 했습니까?

git bundle create aBundle --all # hopefully package everything, 
           # the result being *one* file. 
git clone aBundle newRepo  # recreate a full repo 
# check if the cloned repo contains only packaged object 

정상적으로 작동하는 경우 새로운 복제 된 repo를 기본 repo로 사용할 수 있습니다.

+0

죄송하지만 도움이되지 않습니다. 나는 그런 번들을 만들었고 그것은 60 MB이다. 그러나 .git/objects/pack의 파일 팩은 64MB이고 모든 느슨한 객체 객체는 함께 32MB를 사용합니다. 번들에서 (내 리포지토리의) 매달려있는 커밋을 참조하려고했으나 작동하지 않았습니다. (아무도 모릅니다.). –

+1

@PaulPladijs :하지만 그 번들의 ​​복제본에 풀린 객체가 있습니까? 그래도 git 번들은 참조 된 커밋 만 고려할 가능성이 높다. – VonC

1

git-gui의 경고는 유지 관리 작업을 수행하기를 원할뿐입니다. 많은 수의 물체를 가지고있는 대부분의 사람들은 물체를 느리게 움직이고 있습니다. 귀하의 경우 경고를 비활성화해야합니다. 문제의 기능은 hint_gc이며 git-gui 스크립트 파일의 끝 부분에서 호출됩니다. 아래와 같이 주석 처리하십시오.

if {[is_enabled multicommit]} { 
     #after 1000 hint_gc 
} 

멀티 매스 비즈니스는 커밋 도구 또는 범용 애플 리케이션으로 실행 중인지 여부를 결정하는 플래그입니다.

git-gui를 다른 곳에서 사용하려면 일반적으로 저장소 별 플래그를 추가 할 수 있습니다. 같은 뭔가 :

if {[is_enabled multicommit] && ![is_config_true gui.skip_gc_warning]} { 
     after 1000 hint_gc 
} 

는 당 저장소으로 그것을 사용하지 git config --bool gui.skip_gc_warning true을 사용할 수 있도록해야한다.

+0

이것은 좋은 생각입니다! 시도했지만'skip_gc_warning'에서'_' 밑줄을 제거해야 작동합니다. 나는 여전히 재 포장 솔루션을 기다리고있다 (가능하다면 궁금하다). 그렇지 않으면 이것이 최고의 대답이 될 수 있습니다. –