2009-12-11 5 views
2

근원에 저장된 파일을 무시하도록 git에 지시하는 방법이 있습니까? 문제의 파일이 업스트림 저장소에 있으므로 .gitignore 또는 .git/info/exclude에 추가하는 것만으로는 작동하지 않습니다.git : 기원의 파일 무시

배경 :

내 상류 저장소 일부에 파일이 생성 있습니다. 로컬 재 빌드를 수행 할 때마다 생성 된 파일이 변경되고 커미트 된 버전과 다릅니다. 생성 된 파일은 많은 사용자가 파일을 생성 할 소프트웨어가 없기 때문에 저장소에 있습니다 (그리고이 파일을 변경할 권한이 없습니다). 이러한 생성 된 파일은 직접 생성되지 않으며 git 저장소에 커밋하지 않습니다. 마스터 리포지토리에 푸시 할 별도의 메커니즘이 있습니다 (그리고이 별도의 메커니즘을 제어 할 수 없습니다).

나는 업스트림 서브 버전 저장소를 편집하기 위해 전용 자식 저장소를 사용하고 있습니다. 이렇게하기 위해서, 나는 Subversion으로부터 커밋을 끌어 오기위한 git 저장소만을 가지고있다. git 저장소는 cronjob을 통해 주기적으로 동기화됩니다. 그런 다음 업스트림 git 저장소의 복제본 인 개인 git 저장소가 있습니다. 생성 된 파일에 대해 저에게 괴롭히지 않기를 바랍니다. 나는이 두 가지 결과 중 하나에 만족한다 : 파일은 더 이상 내 로컬 자식 저장소에 의해 추적되지 않는다 (그러나 svn과 동기화되는 파일에 의해 추적되어야한다). 그렇지 않으면 git이 생성 된 파일을 자동으로 업데이트하지만 커밋하지 않는다. 내 변경 사항 및 파일은 "git status"의 "Changed but not updated :"섹션에 절대로 표시되지 않습니다.

답변

2

git update-index --assume-unchanged이 해결책이 될 수 있습니다. 자세한 내용은 man page을 확인하십시오.

이러한 플래그가 지정된

--no-assume-unchanged

--assume-unchanged


    • , 경로 기록 오브젝트 이름은 업데이트되지 않습니다. 대신이 옵션은 경로에 대해 "변경되지 않은 것으로 가정"비트를 설정 및 해제합니다. "assuming unchanged"비트가 켜지면, git은 작업 트리 파일에서 가능한 수정을 확인하지 않으므로 작업 트리 파일을 변경할 때 git에 알려주기 위해 비트를 수동으로 설정 해제해야합니다. 이것은 때로는 매우 느린 lstat (2) 시스템 호출 (예 : cifs)을 가진 파일 시스템에서 큰 프로젝트로 작업 할 때 도움이됩니다.

      이 옵션은 추적 된 파일의 커밋되지 않은 변경 사항을 무시하기위한 거친 파일 수준 메커니즘으로 사용할 수도 있습니다 (추적되지 않은 파일의 경우 .gitignore와 유사). 명시 적으로 자식 추가 작업을 수행하면 여전히 작업 트리에서 파일을 새로 고칩니다. Git은 색인에서이 파일을 수정해야하는 경우를 대비하여 (정상적으로) 실패합니다. 커밋에서 병합 할 때; 따라서 추측 된 untracked 파일이 업스트림으로 변경되는 경우 수동으로 상황을 처리해야합니다.

  • +0

    실제로 특정 경로에서 사용할 수 있습니까? –

    +0

    나는 그것을 내 프로젝트에서 시도해 보았고 리모컨의 파일을 삭제할 수 없었다 : git update-index --no-assume-unchanged MyProject.xcodeproj/project.xcworkspace/xcuserdata / –