IT story

이미 체크인 한 디렉토리의 내용을 무시 하시겠습니까?

hot-time 2020. 4. 23. 08:02
반응형

이미 체크인 한 디렉토리의 내용을 무시 하시겠습니까?


여러 프로젝트에서 사용되는 그래픽 및 사운드 파일을 보유하는 데만 사용되는 git 저장소가 있습니다. 서브 디렉토리가없는 하나의 디렉토리에 있습니다. 이제 방금 여러 레벨의 하위 디렉토리가있는 구조화 된 다른 디렉토리에서 이러한 자산을 복사하는 스크립트를 작성했습니다.

이제 (소스) 계층 파일 구조 만 git에 의해 추적되기를 원하고 (대상) 플랫 디렉토리 (한 파일에 모든 파일이있는)는 무시해야합니다.

대상 디렉토리를 .gitignore에 추가했지만 git은 여전히 ​​변경 사항을 추적합니다. 대상 디렉토리에서 이전 파일의 삭제를 커밋하면 git이 새 내용 추적을 중지 할 수 있지만 (스크립트에서 복사 함) 그렇지 않습니다.

대상 디렉토리를 잊어 버리는 방법은 무엇입니까?


이 명령은 git이 디렉토리와 그 아래의 모든 파일을 실제로 삭제하지 않고 추적을 해제하도록합니다.

git rm -r --cached <your directory>

-r옵션을 사용하면 디렉토리 아래의 모든 파일이 제거됩니다.

--cached옵션을 사용하면 파일이 작업 복사본이 아닌 git의 인덱스에서만 제거됩니다. 기본적으로 git rm <file>삭제 <file>합니다.


추적 된 파일 (체크인)이 필요하지만 파일을 로컬 저장소 및 원격 저장소에 유지하면서 파일의 추가 변경 사항을 추적하지 않으려면 다음을 수행하십시오.

git update-index --assume-unchanged path/to/file.txt

그 후에는이 파일에 대한 변경 사항이 더 이상에 표시되지 않습니다 git status.


blah/git에 added 라는 하위 디렉토리 의 경우 다음 두 가지 모두의 새 파일을 무시하는 것으로 보입니다 blah/. .gitignore에 추가됨 :

blah 
blah/*

이것이 나쁜 사람인지 아닌지 잘 모르겠지만 여기에 있습니다.

  1. *Generated*루트 .gitignore 파일에 추가 했습니다.
  2. GeneratedFile.Whatever.ext로 유지하려는 파일을 제출했습니다. 체크인
  3. 체크 아웃 후 git hook을 만들어서 powershell 스크립트를 호출 하여이 작업을 수행했습니다.

dir *.CheckedIn -Recurse | %{ copy $_.FullName "$($_.FullName)".Replace("CheckedIn","") -EA SilentlyContinue}

나는 나 자신에 대해 조금 나쁘게 생각하지만 실제로는 효과가 있습니다.


좋아, 먼저 디렉토리가 완전히 비어있는 상태에서 체크인해야하며 (이전 파일이나 새 파일이 아닌) 이후에 추가 된 파일은 무시됩니다. 커밋하기 전에 이전 파일 추가 및 새 파일을 제거하면 새 파일은 무시해도 리포지토리에 추가됩니다.

적어도 이것은이 상황에서 나를 위해 일했습니다. 누군가 무슨 일이 일어나고 있는지 더 많은 통찰력을 제공 할 수 있다면 여전히 좋을 것입니다.

참고 URL : https://stackoverflow.com/questions/1329291/ignoring-an-already-checked-in-directorys-contents

반응형