2010-04-27 6 views
12

일부 디렉토리에는 50,000 개 이상의 중요하지 않은 파일 (개발 용)이있는 웹 사이트 프로젝트가 있습니다.삭제 된 파일을 무시합니다

/website.com/files/1.txt 
/website.com/files/2.txt 
/website.com/files/3.txt 
/website.com/files/etc.txt 

/파일의 항목은 이미 repo에 있습니다. 내 로컬 복사본에있는/파일에있는 모든 파일을 삭제하고 싶지만 git이이를 무시하여 웹 서버를 당길 때 삭제하지 않도록하고 싶습니다.

아이디어가 있으십니까?

답변

1

Ok Ive가 해결책을 찾았습니다. 하위 디렉토리에 새 저장소를 만들면 상위 저장소에서 해당 저장소를 무시합니다.

+1

작동하지만, 여러 프로젝트에서 많은 수의 branch/repos로 끝나는 것은 이상적이지 않다. 프로젝트 목록이 커질수록 앞으로는 어려움이 따를 수 있습니다. '.gitignore'와 인덱스 관리 도구에 대해 좀더 익숙해지기를 권합니다. 위의 대답에 괜찮은 입문서가 있습니다. 한 번 시도해 보면 정말 쉽습니다 ... – MaurerPower

+0

@MaurerPower, 귀하의 기술적 답변에 감사드립니다. 'git rm --cached'는 내 요구 사항에 맞지 않습니다. 예를 들어 내가 그 명령을 사용한다면, 커밋하고 푸시한다. 다른 서버로 가져 오면 원본 서버에서 파일을 삭제하지 않았더라도 해당 서버에서 파일을 계속 삭제합니다. 나는 litte 테스트를했는데 여기에 내 결과가있다 : http://pastebin.com/5X0t1KGs – Petah

2

하위 repo 만들기는 하나의 해결책이지만 서브 repo는 submodule으로 설정해야합니다.

그 방법 :
  • 당신이 '파일'내용이 하루 진화, 당신은 주요 REPO
  • 에 진화를 등록 할 수 있습니다
  • 일반적인 내용 사이에 '파일'내용있는 링크를 유지
  • 당신은 그게 리를 다시 얻을 충분합니다 'files'내용
  • 배포에 대한
  • git submodule initgit submodule update 충전없이 ("git submodule update"없이 주 REPO를 체크 아웃 할 수 있습니다 'files'콘텐츠의 ght 버전입니다.
6

아래의 코드는 당신이 자식 상태를 수행 할 때이를 무시하고 삭제뿐만 아니라 수정 된 파일에서 작동합니다.

git update-index --assume-unchanged dir-im-removing/ 

또는 특정 파일

git update-index --assume-unchanged config/database.yml 

Ignore modified (but not committed) files in git?

주의 : 당신이 할 때 삭제 된 파일에 대한 위의 제안 삭제 된 파일이 포함되어 있습니다 "자식이 -am 커밋"!

나에게 맞는 솔루션은 파일을 삭제하는 대신 내용을 비워 두는 것입니다. 이것이 내가 .htaccess 파일을 음소거하는 데 사용했던 것입니다.

10

전체 디렉토리를 무시하는 기능이 작동하지 않습니다. 나는 이것을해야만했다 :

for i in `git status | grep deleted | awk '{print $3}'`; do git update-index --assume-unchanged $i; done 
+2

'$ 3'을'$ 2' 버전 2.3.2로 바꿀 필요가 있었다. – crizCraig

관련 문제