Git Repo에서 기존 파일 제거


답변:


143

한 번에 전체 답변을 제공하십시오.

  1. klemens에서 : 파일을 .gitignorerepo의 원하지 않는 파일 위의 파일 에 추가해야합니다 . 즉

    $ cd $ cat >> .gitignore development.log CD

  2. m에서 narebski : 그런 다음 "를 실행 git rm --cached <file>하고이 제거를 커밋 "하여 repo에서 파일을 제거해야합니다.

repo가 ​​해당 파일을 추적 한 적이없는 것처럼 보이게하려면, 역사상 모든 커밋마다 새로운 커밋을 생성 할뿐 아니라 상호 운용성을 파괴하는 방식으로 인해 훨씬 ​​복잡하고 낙담하게됩니다. 레포를 복제 한 다른 사람들 사이에 있지만 커밋을 수행하기 전에 커밋을 테스트한다고 가정하면 커밋을 모두 테스트하지 않습니다.

이 경고를 염두에두고 목표가 맞는지 찾고있는 도구는 filter-branch입니다. 첫 번째 예는 내가 설명하는 것을 정확하게 수행합니다.


3
git rm --cached를 사용하면 분기를 제거했을뿐만 아니라 다른 시스템으로 가져 가면 해당 시스템에서 실제로 파일을 삭제합니다. 무슨 일인지 알 겠어?
biagidp

2
위의 응답으로 : 문제는 변경 사항을 가져 오기 전에 대체 시스템에 .gitignore가 없어서 삭제하면 로컬 사본이 제거되었다고 생각합니다. 적어도 그것은 이론이다
biagidp

53

파일 추적을 중지하려면을 사용하십시오 git rm --cached <filename>.

그러나 다른 사람들이 지적했듯이 파일을 .gitignore에 추가하면 나중에 실수로 다시 추가하지 못할 수 있습니다.


1

gitignore 파일을 추가하십시오.

참조 http://git-scm.com/docs/gitignore를


13
이것은 답의 절반에 불과합니다. .gitignore항목은 이미 추적중인 파일에는 적용되지 않습니다.
CB Bailey

10
두 번째 부분은 git rm --cached <file>제거를 시작하는 것입니다.
Jakub Narębski

1
git이 현재 .gitignore 파일에 따라 현재 추적 된 모든 파일을 재평가하는 간단한 명령이없는 이유는 무엇입니까? ... 혹은 너무 상식적인가? : p
Alexander-복원 모니카
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.