Git fatal: could be both a local file and a tracking branch.

Jeongkuk Seo
sjk5766
Published in
May 17, 2022

며칠 전 test 브랜치로 이동 하려는데 위와 같은 에러가 발생했다. 참고로 test 브랜치는 처음 checkout 하는 듯.. 그 때는 QA 준비로 바빠서 넘어 갔었는데 오늘 해당 내용을 정리한다.

checkout 명령어는 아래와 같은 동작을 수행한다.

  • 로컬이나 원격 브랜치가 있으면 브랜치로 스위칭한다.
  • 추적하는 file이나 디렉토리가 있으면 리셋시킨다.

결론을 말하자면 원인은 test 브랜치와 test 디렉토리가 동시에 존재했기 때문에 git checkout 명령어가 헷갈려서 에러를 일으켰다.

해결법은 간단하다.

git checkout test --

여기서 --를 기준으로 앞에 있는 test는 브랜치나 commit을 가리키고 —- 뒤에 나오는 값은 파일 경로를 의미한다. 위 예제에서는 경로는 없다.

다른 방법으로는 명령어를 더 정확한 것을 사용하는 것이다.

git switch test // 추적하는 test가 있더라도 test 브랜치로 이동한다.
git restore test // test 브랜치가 있더라도 test 파일/디렉토리를 reset 한다.

--

--