2010-04-08 4 views
4

실수로 내 development.sqlite3 파일을 Git에 위탁했습니다. 위탁 속도가 느려졌습니다. 나는 .gitignore에 대해 알고 있지만 일단 그렇게하면 파일을 내 저장소에서 가져 옵니까? 내 관심사는 커밋과 푸시 시간을 줄이는 것입니다.실수로 dev에 위탁 된 데이터베이스를 Git에

+2

나는 당신이 http://stackoverflow.com/questions/1143796/git-remove-a-file-from-the-을 찾고 있다고 생각한다. 저장소가없는 로컬 파일 시스템에서 삭제 .gitignore에 추가해야하지만 저장소에서도 제거해야합니다. – bobDevil

+1

가능한 중복 사본 http://stackoverflow.com/questions/307828/ 자식 제거 파일 - 실수로 저장소에 추가됨 – rjh

+0

quickfix : 해당 파일을 백업하고 다음으로 새 파일 만들기 원래 이름, 백업 파일을 .gitignore에 추가하고 커밋, .gitignore에서 백업 파일을 제거하고 db 파일을 추가 한 다음 백업을 마지막으로 복원하십시오. –

답변

-1

아니요. 모든 .gitignore 파일은 일괄 커밋 변경시 해당 파일을 무시하도록 다양한 Git 사용자 인터페이스 도구에 지시합니다. 여전히 수동으로 원하는 개별 파일을 Git의 데이터베이스에 넣을 수 있으며, Git 수정 데이터베이스에서 아무 것도 제거하지 않을 수도 있습니다. 이것은 단지 최근의 커밋에 - 필터 분기 장식성에 대한 필요가 없습니다

git filter-branch --tree-filter ´rm filename´ HEAD 
+0

실제로 파일을 제거하는 방법 인 실제 질문에 실제로 대답하지 않았습니다. – Cascabel

1

이 시도해보십시오. 그렇지 않다면 파일 (git rm --cached <filename>)을 삭제하고 커밋 (git commit --amend)을 수정하십시오. --cached 옵션은 인덱스 (커밋 스테이징 영역)의 복사본 만 제거하고 작업 트리의 버전은 그대로 유지합니다.

역사가 더 먼 경우 대화 형 리베이스 (git rebase -i <commit before the bad one> master)를 사용하고 edit 나쁜 커밋을 선택하고 이전과 마찬가지로 rm/amend를 사용할 수 있습니다. 물론 gitignore에도 추가해야합니다.

이미이 커밋을 푸시 한 경우 push -f을 사용하여 푸시하기 위해 빨리 감기를 수행해야하며, 다른 사람이 이미 푸시했다면 성가 시게됩니다. git-rebase의 맨 페이지에있는 "업스트림 리베이스에서 복구하기"섹션

+1

'filter-branch'는 확실히 과잉입니다. 문제의 파일은 하나의 커밋에 추가 된 이후 수정되지 않았습니다. – Cascabel

6

:

+0

나는이 대답이 왜 떨어졌는지 궁금하다. – Cascabel

관련 문제