저장소에서 파일을 제거하지만 로컬로 유지


369

원격 저장소에서 제거하려는 폴더가 있습니다. 삭제하고 싶지만 폴더를 컴퓨터에 보관하십시오.



글을 쓸 때 제안 된 관련 질문을 살펴보십시오. 복제본은 아마도 처음 두 가지 중 하나 일 것입니다.
Cascabel


답변:


637
git rm --cached -r somedir

디렉토리 삭제를 준비하지만 디스크의 어떤 것도 건드리지 않습니다. 이것은 다음과 같은 파일에서도 작동합니다.

git rm --cached somefile.ext

그 후 당신은 추가 할 수 있습니다 somedir/또는 somefile.ext당신에 .gitignore그 자식이 다시 추가하려고하지 않도록 파일.


24
그런 다음 .gitignore에 경로를 추가하여 git이 나중에 추가하지 않도록하십시오.
grossvogel 16:12의

3
이로 인해 원격에서 디렉토리를 가져올 때 디렉토리에 파일이 제거됩니까?
bstpierre

그가 당길 때가 아니다. 풀의 자동 병합 프로세스 동안 파일은 로컬에서 제거 된 상태로 유지됩니다. 그 후, 푸시하면 파일이 서버 측에서 제거됩니다.
Walter Mundt

7
세 번째 리모컨이 있으면 어떻게됩니까? 해당 파일이 향후 풀에서 제거됩니까? 나는 이것이 매우 일반적인 유스 케이스라고 생각하기 때문에 묻습니다. 즉, 일부 파일을 리포지토리로 확인하고 나중에 원격에서 서로 다른 이유가 있다는 것을 깨달았습니다. 모든 로컬 체크 아웃을 그대로 유지하고 리포지토리에서 파일을 제거하여 문제를 해결하십시오.
Bobby Jack

6
단일 파일의 경우 다음을 수행 할 수 있습니다git rm --cached path/to/file
Travis Reeder

3

나는 단지 :

  • 작업 트리 밖으로 폴더를 이동
  • git rm 폴더, 변경 사항을 커밋
  • 추가 .gitignore(또는 .git/info/excludes), 변경 사항 커밋
  • 폴더를 뒤로 이동

8
이것은 좋은 해결책이 아닙니다. 디렉토리가 매우 큰 경우 어떻게해야합니까?
ioleo

아마 사용할 필요가 있습니다git rm -r
theUtherSide

1
@loostro는 다른 블록 장치로 옮기지 않습니다. 대부분의 파일 시스템은 파일의 inode를 업데이트 할뿐 문자 그대로 전체 디렉토리를 옮기지 않습니다.
648trindade
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.