티스토리 뷰

.gitignore 파일에 항목을 추가했음에도 불구하고 Git 추적이 멈추지 않는 경우, 해당 파일들이 이미 Git 추적 상태에 있기 때문일 수 있습니다. .gitignore에 파일을 추가하는 것은 Git이 추후 해당 파일을 무시하도록 지시하지만, 이미 추적 중인 파일에는 영향을 주지 않습니다. 따라서, 이미 추적 중인 파일의 추적을 멈추고, 해당 파일들을 리모트 저장소에서 제거하려면 추가적인 작업이 필요합니다.

다음 단계를 따라 파일 추적을 멈추고, 리모트 저장소에서 해당 파일을 제거할 수 있습니다.

 

1. 로컬 저장소에서 파일 추적 중지

먼저, 로컬 저장소에서 파일의 추적을 중지합니다. 터미널에서 다음 명령어를 실행하세요

--cached 옵션은 파일을 로컬 디렉토리에 남겨두면서 Git의 추적 목록에서만 제거

git rm --cached 파일경로
아래는 예시
git rm --cached /lib/common/const/data.dart
git rm --cached /lib/common/const/type_data.dart

 

 

2. gitignore 파일 업데이트

/lib/common/const/data.dart/lib/common/const/type_data.dart 파일이 .gitignore 파일에 올바르게 명시되어 있는지 확인합니다. 파일 경로가 정확하고, .gitignore 파일이 프로젝트의 루트 디렉토리에 위치해 있는지 확인하세요.

 

3. 변경사항 커밋

변경사항을 커밋하여, 이제 Git이 해당 파일들을 추적하지 않도록 합니다.

bash

git commit -m "Remove secret files from tracking"

 

4. 리모트 저장소에 반영

변경사항을 리모트 저장소에 푸시합니다.

git push origin main

 

 

5. 커밋 이력에서 파일 제거 (선택사항)

만약 해당 파일들을 커밋 이력에서 완전히 제거하고 싶다면, git filter-branch 명령어나 BFG Repo-Cleaner 같은 도구를 사용할 수 있다. 이 작업은 리포지토리의 이력을 수정하므로, 협업 중인 다른 사용자들과 상의한 후에 신중하게 진행해야함.

아래는 git filter-branch 명령어를 통한 커밋 이력 제거

 

git filter-branch --force --index-filter 
"git rm --cached --ignore-unmatch /lib/common/const/data.dart" --prune-empty --tag-name-filter cat -- --all

여러개를 제거 하고싶을때?
"git rm --cached --ignore-unmatch 파일경로1 파일경로2" --prune-empty --tag-name-filter cat -- --all

아래는 예시
git filter-branch --force --index-filter 
"git rm --cached --ignore-unmatch /lib/common/const/data.dart /lib/common/const/type_data.dart" --prune-empty --tag-name-filter cat -- --all

 

 

이 명령어를 실행한 후, 강제 푸시(git push --force)를 통해 리모트 저장소에 변경사항을 반영

이러한 단계를 통해 파일을 Git 추적에서 제외하고, 필요한 경우 커밋 이력에서도 해당 파일들을 제거할 있다.

 

모조리 지운다!

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함