2014-02-28 2 views
-2

커밋 제거 :자식에서 파일이 나는이 같은 짓을

1. git add . 
2.git commit 

따라서 내가 다음 비디오 파일을 삭제하고 1 단계와 2 단계를 반복하여 제거하려고 200메가바이트의 비디오 파일을 커밋을하지만 내 비디오 파일 .. 내가 무엇을에해야합니까 커밋 어딘가에 여전히으로 하나 도움이되지 않았다, 그때 내가

1.git add -u 
2.git reset HEAD path/to/file 
3.git commit 

따라서 내가 커밋 3 일 오전이 세 가지 명령을 실행하여 결국 인터넷 검색을 시도, 여전히 수없는이 밀어 이 혼란에서 벗어나기 위해서!

+1

내가 왜 복제본이라고 생각하는지 설명하겠습니다. ** 이미 ** 해당 지역의 '작업중인'저장소에 커다란 비디오를 저지른 경우 저장소가 삭제 된 경우에도 저장소에 저장됩니다. 왜냐하면 '역사'가 언제나 되돌릴 수 있기 때문입니다. 그것은 버저 닝과 커밋의 요점입니다. 커밋되지 않은 커밋 중 하나가 큰 파일 - 블롭을 포함하고 있기 때문에 200MB를 밀어내는 것입니다. 즉각적으로 삭제 된 것으로 표시하는 것입니다 (별개의 변경이므로!). . 그래서 나는 그 파일을 '.gitignore''inging하는 것 이외에, 그것을 역사에서 완전히 제거해야한다고 생각한다. – quetzalcoatl

답변

2

큰 파일이 repo의 일부로 남아 있으므로 삭제 된 비디오 파일로 새 커밋을 추가하는 것은 도움이되지 않습니다. 대신 : commit 비디오 파일을 추가하기 전에 하나입니다

git reset <commit> 

. 그런 다음

echo <video-file-name> >> .gitignore 
git add . 
git commit 

.gitignore 파일은 완전히 자식에 의해 무시되는 파일의 목록이 포함되어 있습니다.

+0

흠 .. 커다란 커밋에서 뛰쳐 나올 때 밀어 넣기 중에 전송되는 것을 막을 수 있을까요? 확실하지 않습니다./틀림없이, "잘못된 커밋"은 여전히 ​​로컬 저장소에 있고 거대한 파일은 여전히 ​​역사에 머물러있을 것입니다. 주석에 링크 된 질문에 표시된대로 파일/커밋을 실제로 제거하는 것이 합리적 일 수 있습니다. – quetzalcoatl

+1

재설정 후 큰 비디오 BLOB 및 참조 커밋은 계속 Repo에 있지만 참조가 표시되지 않으므로 보이지 않습니다. 그들은 어느 쪽이든 강요 당하지 않을 것이다. 그 다음에'git gc '명령은 그것들을 완전히 제거 할 것입니다. – SzG

관련 문제