2010-12-07 9 views
3

로컬 Redmine 서버에서 호스팅되는 바이너리가 많은 오래된 git repo가 ​​있습니다. 내 레포의 크기를 좀 줄이기 위해 특정 날짜 (6 개월 또는 12 개월 전) 전에 모든 댓글을 스쿼시하고 싶습니다.스쿼시 git 히스토리

이 방법이 있습니까?

답변

3

기록을 변경할 때마다 변경 후 모든 커밋에 새로운 SHA1 합계가 적용됩니다. 레포를 사용하는 경우 또는 의사 소통이 쉬운 사람들로 구성된 선택 그룹 인 경우 스쿼시 또는 필터 (아래 참조)를 사용하여 기록을 정리 한 다음 가져올 때 수동으로 재설정해야합니다 모든 지부가 새로운 머리로 향합니다. 이것이 이 아니라면 상황이며, 불행히도 그걸로 살아야합니다. 기록이 게시되면 변경할 수 없습니다.

이제 git rebase를 사용하여 커밋을 제거 할 수 있습니다. 느리고 고통 스럽지만 작동 할 수 있습니다. git filter-branch를 사용하여 모든 바이너리를 제거 할 수도 있습니다. 나는 레포에서 직접이 작업을 수행해야했으며 상당히 쉽습니다. 모든 바이너리가 단일 디렉토리에 있다면 git filter-branch의 --subdirectory 플래그를 사용하여 (물론 도움말 페이지를 읽음) 주어진 범위의 모든 커밋에서 해당 하위 디렉토리의 모든 것을 제거 할 수 있습니다. . 그들이 흩어져 있다면 git filter-branch에 쉘 명령 줄이나 모든 커밋에서 실행할 셸 스크립트를 줄 수 있으며 그 스크립트는 바이너리를 제거하고 제거하거나 변경하려는 모든 것을 제거 할 수 있습니다 . 다시 도움말 페이지를 참조하십시오. 하지만 git filter-branch는 이런 상황에 처할 수있는 방법이라고 생각합니다.

관련 문제