내 GitHub 계정의 리포지토리에서 작업하고 있는데 이것이 우연히 발견 된 문제입니다.
- 몇 개의 npm 패키지가 설치된 폴더가있는 Node.js 프로젝트
- 패키지는
node_modules
폴더에 있었다 - 해당 폴더를 git 저장소에 추가하고 코드를 github로 푸시했습니다 (당시 npm 부분에 대해서는 생각하지 않았습니다)
- 해당 폴더가 코드의 일부가 될 필요는 없다는 것을 깨달았습니다.
- 해당 폴더를 삭제하고 푸시
이 경우 총 git repo의 크기는 약 6MB 였고 실제 코드 (해당 폴더 제외)는 약 300KB 였습니다 .
이제 마지막으로 찾고있는 것은 git의 기록에서 해당 패키지 폴더의 세부 정보를 제거하는 방법이므로 누군가 복제 할 경우 실제 파일이 얻을 수있는 6MB의 기록을 다운로드 할 필요가 없습니다. 마지막 커밋은 300KB입니다.
가능한 해결책을 찾고이 두 가지 방법을 시도했습니다.
Gist는 스크립트를 실행 한 후 해당 폴더를 제거하고 50 개의 다른 커밋이 수정되었음을 보여준 곳에서 작동하는 것처럼 보였다. 그러나 그것은 그 코드를 밀어 넣지 못했습니다. 내가 밀어하려 할 때, 말했다 Branch up to date
하지만 50 개 커밋이에 수정 된 보였다 git status
. 다른 두 가지 방법도 도움이되지 않았습니다.
이제 폴더의 기록을 제거했음을 보여 주었지만 로컬 호스트에서 해당 리포지토리의 크기를 확인할 때 여전히 약 6MB였습니다. (또한 refs/original
폴더를 삭제 했지만 저장소 크기의 변화를 보지 못했습니다).
내가 분명히하고 싶은 것은 커밋 히스토리 (내가 생각한 유일한 것임)뿐만 아니라 git이 롤백하고 싶다고 가정하는 파일을 제거하는 방법이 있는지입니다.
해결책이 제시되어 내 로컬 호스트에 적용되었지만 해당 GitHub 저장소로 재현 할 수 없다고 가정 해보십시오. 해당 저장소를 복제하고 첫 번째 커밋으로 롤백하여 트릭을 수행하고 푸시 할 수 있습니까 (또는 git이 여전히 모든 커밋의 역사가 있습니까?-일명 6MB).
내 최종 목표는 기본적으로 git에서 폴더 내용을 제거하는 가장 좋은 방법을 찾는 것입니다. 따라서 사용자는 6MB 상당의 자료를 다운로드 할 필요가 없으며 여전히 모듈 폴더를 건드리지 않은 다른 커밋을 가질 수 있습니다 (예 : git의 역사에서).
어떻게해야합니까?