repo를 새 .gitignore 파일과 다시 동기화합니다.
gitignore 파일을 업데이트한 후 git 저장소를 "새로 고침"할 수 있습니까?
방금 gitignore에 ignore(?)를 추가했으며 새 파일과 일치하는 repo에 이미 있는 항목을 제거하고 싶습니다.
".gitignore file not ignore"에 언급된 솔루션은 약간 극단적이지만 다음과 같이 작동해야 합니다.
# rm all files
git rm -r --cached .
# add all files as per new .gitignore
git add .
# now, commit for new .gitignore to apply
git commit -m ".gitignore is now working"
jball037이 아래와 같이 문제가 발생하지 않도록 유지할 변경사항을 먼저 커밋해야 합니다.
그--cached
하지만 옵션을 선택하면 파일이 디스크에 그대로 남아 있습니다.)
또한 블로그 게시물 "이미 추적된 파일을 Git이 무시하도록 만들기"에서 보다 세분화된 솔루션을 제공합니다.
git rm --cached `git ls-files -i --exclude-standard`
경로에 공백이 있는 파일
다음과 같은 오류 메시지가 표시되는 경우
fatal: path spec '...' did not match any files
경로에 공백이 있는 파일이 있을 수 있습니다.옵션을 사용하여 다른 모든 파일을 제거할 수 있습니다.
--ignore-unmatch
:
git rm --cached --ignore-unmatch `git ls-files -i --exclude-standard`
그러나 일치하지 않는 파일은 저장소에 남아 있으므로 경로를 큰따옴표로 묶어서 명시적으로 제거해야 합니다.
git rm --cached "<path.to.remaining.file>"
제가 오해할 수도 있지만, 새로 무시된 파일을 삭제하려는 것입니까, 아니면 이러한 파일에 대한 새로운 수정 사항을 무시하려는 것입니까?이 경우에는 효과가 있습니다.
이전에 커밋된 무시된 파일을 삭제하려면 다음을 사용합니다.
git rm –cached `git ls-files -i –exclude-standard`
git commit -m 'clean up'
오래된 질문인 것은 알지만 파일 이름에 공백이 있으면 Gracchus의 솔루션이 작동하지 않습니다.공백이 있는 파일 이름에 대한 VonC의 해결책은 다음을 사용하여 파일 이름을 제거하지 않는 것입니다.--ignore-unmatch
그런 다음 수동으로 제거하지만 많이 있으면 제대로 작동하지 않습니다.
다음은 bash 어레이를 사용하여 모든 파일을 캡처하는 솔루션입니다.
# Build bash array of the file names
while read -r file; do
rmlist+=( "$file" )
done < <(git ls-files -i --exclude-standard)
git rm --cached "${rmlist[@]}"
git commit -m 'ignore update'
언급URL : https://stackoverflow.com/questions/7075923/resync-git-repo-with-new-gitignore-file
'source' 카테고리의 다른 글
스프링 부트 테스트 - 여러 테스트가 단일 컨텍스트를 공유할 수 있습니까? (0) | 2023.06.26 |
---|---|
여러 사용자 정의 사용자 분류법을 단일 URL에 결합 (0) | 2023.06.26 |
"의존성 분석"에 머무르는 코코파드 (0) | 2023.06.26 |
스프링카프카를 사용하는 카프카에 대한 데드 레터 큐(DLQ) (0) | 2023.06.26 |
깃허브에서 포킹과 클로닝의 차이점은 무엇입니까? (0) | 2023.06.26 |