Don't Panic
in Git ☕ 3분 읽기

[Git] Changes not staged for commit 에러 원인과 해결

목차

에러 증상

정상으로 쓰던 레포지토리에서 파일을 추가하고 git add . 후 커밋하려 하면

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)

커밋이 스테이지에 올라가지 않았다는 에러가 뜨거나,

Untracked files:
  (use "git add <file>..." to include in what will be committed)

추적할 수 없는 파일이라는 메시지가 함께 뜬다.

git add -Agit commit -a를 써봐도 같은 에러가 나고, 상위 폴더에서 git 설정을 한 건 아닌지 확인해봐도 같은 폴더인데 에러가 계속 발생하는 경우 아래 원인들을 확인해 보자.


원인 1 — 관련 파일이 열려 있음 (파일 잠금)

20220217_173041

직접적으로 경로를 지정해 git add해 보면

20220217_173552 20220217_173540

특정 폴더(예: Reference)만 add가 안 되고 나머지는 정상 add가 된다.

20220217_174011

왜 안 되는지 확인해 보니

20220217_173333

엑셀 파일(csv)이 열려 있었다. 이 파일이 열려 있어서 해당 폴더에서는 add가 안 되었고, git add .로 전체 폴더를 add할 때도 에러가 났던 것.

20220217_174017

해결: add하기 전에 관련 파일(엑셀·편집기 등)이 열려 있는지 확인하고 닫은 뒤 다시 add한다.


원인 2 — 중첩 .git 폴더 (git clone 시 하위 폴더에도 .git 생성)

20220731_174221

git clone을 하면 루트 폴더뿐 아니라 안에 내부 폴더까지 .git이 생기는 경우가 있다.

루트 폴더에서 git add .status를 확인해봐도 계속 같은 에러가 뜨는데, 자식 폴더의 .git에서 add하고 커밋해보면 에러가 사라진다.

20220731_180430

단, 자식 폴더에서 push하면 위와 같은 에러가 뜨기 때문에, 상위 폴더 .git에서 add하고 커밋해야 정상적으로 들어간다.

20220731_180616

push 성공.

해결: 루트 폴더에서 작업하되, 하위 폴더에 불필요하게 생긴 .git은 삭제하거나 서브모듈로 등록되어 있는지 확인한다.


참고