2012-10-15 2 views
3

heroku & git을 사용하여 기본 워크 플로우를 통해 페이스 북 앱을 업데이트했습니다. 나는 그 중 유일하게 일하는 사람이고 일주일에 한 번 새로운 바이너리가 발생합니다. git commit -am "새 업데이트" git push herokuGit 푸시가 실패하여 파일 히스토리 부분 삭제를 찾았습니다

이진수는 약 30MB로 증가했습니다. 그리고 요즘 모든 푸시 명령은 다음과 같이 실패합니다. 개체 계산 : 7, 완료. 개체 압축 : 100 % (4/4), 완료되었습니다. 치명적인 : SHA1 파일 '나는 많은 장소에서 검토 한

mysecretgitplace' '쓰기 오류 : 잘못된 인수 오류가 일부 심판을 밀어 실패'이 될 것으로 보인다 매우 일반적인 문제 발견 특히 아무것도에 의해 발생하고 아무것도 될 수 있습니다. 시간이 지남에 따라 바뀐 유일한 것은 이진수의 크기가 커지고 커밋 수가 증가하는 것입니다.

그래서 지금 내가 제거/파괴 /이 하나의 이진 파일의 역사를 지우는 데 사용하고있는 서버 공간을 줄이려고합니다 (완전히 현재 버전 (서버의 머리/마스터 무엇이든) 제외) 나는 매주 바이너리를 제출할 때마다이 작업을 수행 할 것입니다.

제출할 수있는 명령이 있습니까? (제출 한 파일의 "삭제 된"전체 기록을 다시 추가하지 않아도됩니다.) 새로운 바이너리)

(내 게임에만 집중하고 모든 서버, 버전 제어 도구는 신경 쓰지 않아도됩니다.)

답변

1

힘내세요 당신의 역사의 일부를 filtering하여 제거 할 수 있습니다.

첫 번째 예는 트릭을 수행해야합니다 : git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD.

그럼에도 불구하고이 명령에 대해 매우 신중하게 읽고 리포지토리와 리모컨을 효과적으로 수행하려면 무엇을해야합니까 (특히 로컬 리포지토리에서 git gc 사용해야 함).

자세한 내용은 github help section에서 확인할 수 있습니다.

보조 노트로, 큰 파일을 관리 할 때 git이 좋지 않습니다 (잠재적 인 해결책은 git annex을 참조하십시오).

+0

그래, 나는 필터 명령을 우연히 발견했지만 조금 겁이 나서 좀 더 간단한 해결책을 기대했다. (나는 gc를 정기적으로 실행했지만 로컬 저장소는 500MB 이상이되어야하지만 1GB 이상이되어야 함) 바이너리의 이름을 바꾸려면 이전 버전을 완전히 삭제하고 html/php를 수정하십시오 새로운 이름으로,하지만 어서. .. 너도 알지. 감사합니다. 감사합니다. – user1746223

+0

이름을 바꾸면 도움이되지 않습니다. 메모리 공간을 되찾고 싶다면 역사에서이 파일을 지워야합니다. 파일의 모든 버전은 .git/폴더에 저장됩니다. 그래서 그것이 큰 이유입니다. –

+1

이렇게 좋은 해결책은 아니 었습니다. 몇 가지 사항 : "치명적 : 모호한 인수 'rm': 알 수없는 리비전 또는 경로가 작업 트리에 없습니다." 유럽의 컴퓨터에서 일하고 있음을 깨달을 때까지 아무런 문제가 없었습니다. 상태 101 키보드 및 언어 설정.따라서 : git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename'머리글 은 다음과 같아야합니다. git filter-branch --index-filter "git rm --cached - ignore-unmatch filename "HEAD – user1746223

관련 문제