Untracked Files Prevent Merge
Move or commit them before merge
커밋을하고 pull 을 받으려는데 위와 같은 오류가 나고 있는 상황.
오류가 나는 이유는 병합하려는 브랜치에서 untracked 파일과 동일한 이름의 파일이 존재할 때 발생한다. 이 경우, Git은 untracked 파일이 덮어쓰여질 위험이 있다고 판단하여 병합을 중단한다고 한다.
상황은 내가 새로운 컴퓨터로 clone 진행 후 작업을 완료 했다.
수정한 파일만 커밋을 진행 하고 pull을 받으려고 했는데, 누군가가 푸시까지 마친 상황.
그럴 때~ 해당 오류가 발생한다. 근데 이제 깃이 제공해준 해결책에서 보면 옮기거나 커밋하라는데...
view file 을 눌러 파일들을 보니 약 100 몇개....? ㅎ 어쩐담.
[해결 방법]
1) untracked 파일들을 add 후 stash 하기
git add -A
git stash
- git add -A 명령은 워킹 디렉토리의 모든 변경 사항을 인덱스에 추가.
- git stash 명령은 인덱스와 워킹 디렉토리의 변경 사항을 스택에 저장하고, 워킹 디렉토리를 깨끗하게 만든다.
-> 이 방법을 사용하면 추적된 파일과 변경 사항은 스택에 저장되지만, untracked 파일은 기본적으로 스택에 저장되지 않는다.
2) git stash에 untracked 파일까지 포함시키기
git stash -u
- -u 또는 --include-untracked 옵션을 사용하면 untracked 파일도 함께 스택에 저장할 수 있다.
-> 이후 git stash pop 명령을 사용하여 저장된 변경 사항을 복원하면 untracked 파일은 다시 untracked 상태로 복원 된다.
3) 모두 스택에 저장 하는 방법
git stash --all
- --all 옵션을 사용하면 ignored 파일까지 포함하여 워킹 디렉토리의 모든 파일을 스택에 저장합니다.
- git stash pop 명령을 사용하면 스택에 저장된 모든 파일이 복원됩니다.
-> 이 옵션을 사용할 경우, 복원이 안되는 경우가 발생할 수 있다고 한다. 특히 .gitignore에 의해 무시된 파일들은 복원이 안될 수 있으니 주의 하자.
4) 워킹 디렉토리 안의 추적하고 있지 않은 모든 파일을 삭제
git clean [옵션]
- git clean 명령은 워킹 디렉토리에서 untracked 파일을 삭제한다.
- -f 옵션을 사용해야 실제로 파일이 삭제된다.
- -d 옵션을 사용하면 디렉토리도 삭제된다..
- -n 옵션을 사용하면 어떤 파일이 삭제될지 미리 볼 수 있다.
'git' 카테고리의 다른 글
github repository - flutter 연동 (0) | 2024.07.05 |
---|---|
error: failed to push some refs to (0) | 2024.06.27 |
git amend commit 그게 뭐야? (0) | 2024.04.24 |
github default 브랜치명을 master 에서 main 으로 변경하기 (0) | 2024.02.15 |
형상관리의 시작 Git 용어 정리_01 (0) | 2023.10.29 |