가끔씩 flutter 를 사용할때 upgrade를 한 후 시작하는데 그럴때마다 만나는 오류 메세지가 있습니다.
오류메시지
Your flutter checkout has local changes that would be erased by upgrading.
If you want to keep these changes, it is recommended that you stash them via "git stash"
or else commit the changes to a local branch.
If it is okay to remove local changes, then re-run this command with "--force".
Flutter에서 flutter upgrade 명령어를 실행할 때 위와 같은 메시지가 나오는 경우는 Flutter SDK 디렉토리 내에 사용자가 수정한 로컬 변경사항이 있어서 업그레이드를 할 수 없다는 의미라고 합니다.
Flutter SDK 디렉토리는 Git 저장소로 관리되고 있기 때문에, 그 안에서 직접 수정한 파일이 있다면 Git이 이를 감지하고 업그레이드를 막는다고 합니다.
그런데 SDK를 수정한적이 없는데 이상하여 일단 검색한 결과입니다.
Flutter SDK가 수정되는 주요 원인
1. 사용자가 직접 SDK 내부 파일을 수정한 경우
- 예: /flutter/packages/flutter/lib/src/widgets/... 같은 경로의 Dart 파일을 직접 열어 수정
- 테스트용으로 수정했다가 잊어버리는 경우 많음
Flutter SDK는 사실상 하나의 Git 저장소이기 때문에, 어떤 파일이든 수동으로 수정하면 flutter upgrade는 이를 "local change"로 감지합니다.
2. IDE (예: VS Code, Android Studio)가 자동으로 포맷하거나 수정한 경우
- Flutter SDK 내부 파일을 IDE에서 열 때 auto save, format on save 옵션이 켜져 있다면,
무심코 엔터나 공백 하나만 삽입해도 "수정됨" 상태가 됩니다.
3. 특정 플러그인이나 툴이 Flutter SDK 파일을 덮어쓴 경우
- 예: flutterfire configure 또는 flutter doctor --android-licenses 등의 설정 중 SDK 일부 파일이 수정되는 경우 있음
- 또는 제 3자 도구(Git Hook, 커스텀 빌더 등)가 SDK 내부 코드를 수정하도록 설정된 경우
4. Flutter SDK의 Git 상태가 꼬인 경우
- 예: Flutter SDK를 수동으로 복사하거나 다른 브랜치/버전으로 전환하다 Git 상태가 불안정해짐
- .git/index나 .git/config가 충돌 상태로 남아있을 수도 있음
수정된 파일 확인 방법
다음 명령어를 Flutter SDK 디렉토리에서 실행하면 무엇이 변경되었는지 확인할 수 있습니다:
cd <flutter SDK 경로>
git status
저의 경우
On branch stable
Your branch is behind 'origin/stable' by 8 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Untracked files:
(use "git add <file>..." to include in what will be committed)
../flutter/
nothing added to commit but untracked files present (use "git add" to track)
해결 방법
방법 1: 변경 사항을 임시 저장 (추천)
cd <flutter SDK 경로>
git stash
flutter upgrade
- 현재 수정한 내용은 임시로 보관되며 업그레이드 후 git stash pop으로 다시 복원할 수 있습니다.
방법 2: 모든 변경 사항을 제거하고 강제 업그레이드
Flutter SDK를 수정한 적이 없거나 그냥 덮어써도 되는 경우:
flutter upgrade --force
- 경고 없이 Flutter SDK의 로컬 변경 사항을 모두 제거하고 최신 버전으로 업그레이드합니다.
방법 3: 변경 사항을 로컬 브랜치로 백업
cd <flutter SDK 경로>
git checkout -b my_backup
flutter upgrade
- 로컬 브랜치로 백업한 후 안정적으로 업그레이드를 수행할 수 있습니다.
Flutter SDK 경로 확인 방법
Flutter SDK가 어디에 설치되어 있는지 모르겠다면:
which flutter
저는 제가 수정한 기억이 없어서 강제 업그레이드를 해서 해결했습니다. 물론 매번 그렇게 하고 있습니다.
'개발라이프' 카테고리의 다른 글
🛠 Mac에서 Vue.js 서버가 Suspended 상태가 되었을 때 해결하는 방법 (0) | 2025.03.11 |
---|---|
SQLAlchemy: bulk_insert_mappings와 connection.execute 비교 및 성능 분석 (1) | 2025.01.16 |
Jupyter Notebook에서 ModuleNotFoundError 해결 방법 (1) | 2024.12.20 |
bfloat16 (Brain Floating Point 16-bit) (1) | 2024.12.20 |
머신러닝에서 데이터 라벨링이란? (0) | 2024.12.18 |