체크아웃 오류 재현하기
오류를 수정하는 방법을 이해하기 위해 먼저 오류를 재현해 보겠습니다. 이렇게 하면 Git 이 왜 충돌을 보고하는지 명확히 알 수 있습니다. 저희의 설정 스크립트는 이미 두 개의 브랜치 (main 및 feature-branch) 를 가진 Git 저장소를 생성했습니다. feature-branch에는 현재 main 브랜치에서 로컬로 생성할 파일이 포함되어 있습니다.
먼저 프로젝트 디렉토리로 이동합니다. 이 실습의 모든 명령어는 이 디렉토리에서 실행됩니다.
cd ~/project/git-checkout-demo
모든 것이 깨끗한지 확인하기 위해 현재 저장소의 상태를 확인해 보겠습니다.
git status
출력은 다음과 같아야 합니다.
On branch main
nothing to commit, working tree clean
이는 우리가 main 브랜치에 있으며 보류 중인 변경 사항이 없음을 확인합니다. 이제 사용 가능한 브랜치를 나열해 보겠습니다.
git branch
두 개의 브랜치가 표시되며, *는 현재 브랜치를 나타냅니다.
feature-branch
* main
이제 충돌을 생성해 보겠습니다. 현재 작업 디렉토리에 feature.md라는 새 파일을 생성할 것입니다. 이 파일은 현재 main 브랜치에서 Git 에 의해 "추적되지 않음" 상태이지만, feature-branch에서는 동일한 이름의 파일이 이미 존재하며 추적되고 있습니다.
echo "## My local changes to feature documentation" > feature.md
새로운 추적되지 않은 파일을 보기 위해 상태를 다시 확인합니다.
git status
출력은 이제 feature.md를 추적되지 않은 파일로 표시합니다.
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
feature.md
nothing added to commit but untracked files present (use "git add" to track)
마지막으로 feature-branch로 전환해 보겠습니다.
git checkout feature-branch
이 명령어는 실패하고 우리가 연구하고 있는 오류를 생성합니다.
error: The following untracked working tree files would be overwritten by checkout:
feature.md
Please move or remove them before you switch branches.
Aborting
Git 은 feature-branch의 버전으로 인해 로컬의 추적되지 않은 feature.md 파일이 덮어쓰이는 것을 방지하기 위해 체크아웃을 중단했습니다. 다음 단계에서는 이를 해결하는 다양한 방법을 살펴보겠습니다.