2011-09-17 7 views
9

나쁜 초기 커밋 (또는 둘 이상)을 원격 저장소로 푸시하고 지우거나 삭제하려는 경우 - 명령으로 수행 할 수 있습니까?Git clear remote repository

디스크 공간을 사용하지 않도록 서버에서 완전히 제거하는 것이 중요합니다.

E.G. 오늘 저는 dll, sdfs 등을 포함하여 전체 Visual Studio 프로젝트를 추진했습니다. 첫째,이 파일은 상당히 크고 두 번째로 다른 개발자의 VS에 의해 수정되고 병합 할 수없는 것보다 큽니다. 이것은 나를 구글로 만들었고 나는 이들 파일을 무시해야한다는 것을 알았다. 하지만 첫 번째 커밋은 이미 내 저장소를 혼란스럽게합니다. 이걸 제거하고 디스크 공간을 확보하고 싶습니다.

git repo를 제거하고 호스트 웹 사이트 (assembla)를 통해 다시 추가 할 수는 있지만 해결 방법은 들리지 않습니다. 더 전문적인 방법이 있습니까?


UPDATE :

나는 아래의 답변에서 제안을 시도했지만 작동하지 않았다 : '자식 푸시 -f' '자식 푸시 --force' '자식 푸시 원점 -f' '자식을

$ git push --force 
Counting objects: 19, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (19/19), done. 
Writing objects: 100% (19/19), 6.85 KiB, done. 
Total 19 (delta 3), reused 0 (delta 0) 
remote: error: denying non-fast-forward refs/heads/master (you should pull fir 
) 
To [email protected]:xxxxx.git 
! [remote rejected] master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:xxxxx.git' 

답변

9

당신은 git push -f으로 "올바른"REPO를 밀어 강제 할 수 은 결과 '원점 --force를 밀어 넣습니다. 호스트에 따라 느슨한 객체는 git gc이 실행될 때 정리됩니다. 업데이트 : this에 따르면 git gc을 assembla에 강제 적용 할 수 없습니다.

즉시 정리하고 assemblla에서 git gc을 강제 실행하지 못하도록하려면 다른 옵션은 repo를 삭제하고 새 것을 푸시하는 것입니다.

또한 Ryan이 의견에 언급했듯이 repo를 복제했을 가능성이 있음을 모든 사람에게 알리고 역사를 다시 작성했는지 확인하십시오.

+0

+1 1) 가비지 컬렉션이 정기적으로 실행되고, 고아 오브젝트가 자격을 얻을 때까지 정리되지 않으므로 2) 모든 사람이 기록을 다시 작성하고 있음을 확인하십시오. –

+1

가능한 경우, 원격 마스터 브랜치'git push origin : master'를 강제로 삭제하십시오. 일부 원격 저장소 구성에서는이를 허용하지 않습니다. – basicxman

+0

'repo 삭제'란 정확히 무엇을 의미합니까? 거기에 특별한 명령이 있습니까, 아니면 그냥 assembla 웹 페이지를 통해 이것을 의미합니까? – gisek