.gitignore에 나열되었지만 여전히 저장소에있는 파일을 제거하는 방법은 무엇입니까?
내 저장소에 무시해야 할 파일이 있는데 .gitignore에 파일을 추가했지만 물론 내 저장소에서 제거되지는 않습니다.
내 질문은, 내 기록을 다시 작성하고 이러한 모든 파일을 쉽게 제거 할 수있는 filter-branch를 사용하는 마술 명령이나 스크립트가 있습니까? 또는 단순히 커밋을 만들어 명령을 제거하는 명령입니까?
저장소에서 수동으로 제거 할 수 있습니다.
git rm --cached file1 file2 dir/file3
또는 파일이 많은 경우 :
git rm --cached `git ls-files -i --exclude-from=.gitignore`
그러나 이것은 Windows의 Git Bash에서 작동하지 않는 것 같습니다. 오류 메시지가 나타납니다. 다음이 더 잘 작동합니다.
git ls-files -i --exclude-from=.gitignore | xargs git rm --cached
이러한 파일없이 전체 기록을 다시 쓰는 것과 관련하여 자동 으로 수행 할 수있는 방법 이 있는지 의심 스럽 습니다.
그리고 우리는 역사를 다시 쓰는 것이 나쁘다는 것을 알고 있습니다. :)
모든 OS에서 작동하는 더 쉬운 방법은
git rm -r --cached .
git add .
git commit -m "Removing all files in .gitignore"
기본적으로 .gitignore의 파일을 제외한 모든 파일을 읽었습니다.
.gitignore 의 파일을 추적하지 않으므로 git clean 명령을 사용하여 버전 제어가 아닌 파일을 재귀 적으로 제거 할 수 있습니다 .
드라 이런 git clean -xdn
을 수행하고 제거 할 대상을 확인하는 데 사용 합니다.
그런 다음 사용 git clean -xdf
하여 실행하십시오.
기본적으로 git clean -h
또는 man git-clean
(유닉스에서) 도움을 줄 것입니다.
이 명령은 준비 영역에없는 새 파일 도 제거 합니다.
도움이 되길 바랍니다.
sed를 사용하여 .gitignore 문의 출력을 조작하여 매우 간단한 솔루션을 수행했습니다.
cat .gitignore | sed '/^#.*/ d' | sed '/^\s*$/ d' | sed 's/^/git rm -r /' | bash
설명:
- .gitignore 파일을 인쇄하십시오
- 인쇄물에서 모든 설명을 제거
- 빈 줄을 모두 삭제
- 줄의 시작 부분에 'git rm -r'을 추가하십시오
- 모든 줄을 실행하십시오.
git은 .gitignore에 파일을 추가하면 .gitignore 패턴과 일치하는 파일을 무시합니다.
그러나 저장소에 이미 존재하는 파일은 계속 남아 있습니다.
git rm files_ignored; git commit -m 'rm no use files'
무시 된 파일을 삭제 하는 데 사용 합니다.
'IT' 카테고리의 다른 글
jQuery 세트 선택 색인 (0) | 2020.04.02 |
---|---|
핸들 막대의 인덱스를 사용하여 액세스 배열 항목에 어떻게 액세스합니까? (0) | 2020.04.02 |
Android Gradle Apache HttpClient가 존재하지 않습니까? (0) | 2020.04.02 |
한 서버에서 새로운 서버로 GIT 저장소를 마이그레이션하는 방법 (0) | 2020.04.02 |
bash 명령으로 CPU 스파이크를 만드는 방법 (0) | 2020.04.02 |