2010-12-22 8 views
2

서버에서 새 자식 리포를 만든 다음 모든 파일을 커밋했습니다. 일단 그 파일들이 커밋 되었다면 나는 새로운 .gitignore 파일을 생성하고 커밋했다.GIT에서 모든 커밋을 지우시겠습니까?

원본 커밋이 약 30k 개의 파일을 추가했고 .gitignore 파일이 아무런 영향을 미치지 않았기 때문에 두 커밋을 잘못된 순서로 수행했습니다. 두 커밋을 모두 지운 다음 .gitignore 파일을 커밋하면 먼저 파일 양이 크게 줄어들고 repo가 ​​작아집니다.

이것이 가능합니까? BeanstalkApp (우리의 호스팅 된 git 계정)에 repo를 푸시 한 적이 결코 없으므로 가능합니다.

감사합니다,

대니

답변

6

방금 ​​repo를 만든 경우 git의 업데이트 기록에서 파일을 완전히 제거 할 수는 있지만 경험상 상당히 느립니다.

+0

그것을 재현하는 가장 좋은 방법은 무엇입니까? 자식 폴더를 삭제하고 'git init'을 다시 실행 하시겠습니까? – dannymcc

+2

예 .git 폴더를 제거 (또는 더 안전하게, 다른 곳으로 이동) 한 다음 git init을 다시 실행하십시오. –

1

은 새가 원하지 않는 파일을 제거하는 커밋 적용 할 수 있습니다. 그 시점부터 .gitignore 파일에 따라 무시됩니다.

또는 git rebase -i HEAD~2을 시도하고 간단히 초기 커밋을 삭제할 수 있습니다.

+2

그러나 업데이트 기록에서 파일을 제거하지 않습니다. 따라서 사용자가 repo를 복제 할 때 여전히 다운로드됩니다. 필요하지 않은 30k 파일의 경우 문제가 될 수 있습니다. –

+0

커밋을 대화식으로 삭제 한 두 번째 옵션을 사용하여 업데이트 기록에서 파일을 제거 할 수 있습니다. 매달린 커밋은 'git gc'를 수행 할 때 가비지 수집 될 것이므로 그 시점에서 어떤 공간이나 대역폭을 차지하지 않습니다. 그게 작동하는 방법 아닌가요? –

+0

그래서 'git rebase -i HEAD ~ 2'다음에 'git gc'를 실행 하시겠습니까? – dannymcc

관련 문제