메인 콘텐츠로 건너뛰기
저장소 안에서 실행해요. 현재 브랜치와 미커밋 변경을 조회하며 파일 내용이나 커밋 이력은 바꾸지 않아요.

상태의 두 칸 읽기

충돌이 없는 일반 파일에서 git status --short의 첫째 칸은 현재 커밋과 스테이징 영역(index)의 차이, 둘째 칸은 스테이징 영역과 작업 트리(working tree)의 차이예요. 빈칸은 해당 비교에서 변경이 없다는 뜻이에요. MM이면 두 명령을 모두 봐야 해요. 예를 들어 console.log("hello");를 console.log("hello git");로 바꿔 스테이징한 뒤, 파일을 console.log("hello world");로 다시 고쳤다면 git diff --cached는 hello → hello git, git diff는 hello git → hello world를 보여줘요.
일반적인 git diff와 git diff --cached에는 ?? 파일의 내용이 나오지 않아요. diff가 비어 있어도 새 파일이 있을 수 있으니 git status를 함께 확인해요. 충돌 중의 두 칸은 위 표와 의미가 다르므로 git status의 충돌 안내를 읽어요.

관련 옵션과 명령

경로를 지정하는 예시는 저장소 루트에서 실행해요. -- 뒤의 index.js는 확인할 파일 경로로 바꿔요. git diff HEAD도 미추적 파일의 내용은 보여주지 않아요. 중간에 스테이징한 내용이 있어도 작업 파일이 현재 커밋과 같으면 출력이 비어 있을 수 있어요. 커밋 직전 확인에는 git diff --cached를 사용해요.

브랜치 이름이 비어 있거나 결과가 예상과 다르면

  • 브랜치 이름이 비어요: detached HEAD에서는 git branch --show-current가 아무것도 출력하지 않아요. git status로 상태를 확인하고 git rev-parse --short HEAD로 현재 커밋을 조회해요. 조회만 한다면 브랜치를 전환할 필요는 없어요.
  • git diff가 비어요: 이미 스테이징했을 수 있어요. git diff --cached와 git status를 확인해요.
  • 새 파일이 상태에 안 보여요: git status --short --untracked-files=all로 다시 보고, 제외 규칙은 git status --short --ignored로 확인해요.
  • git diff HEAD에서 unknown revision 오류가 나요: git status에서 첫 커밋이 없는지 확인해요. 첫 커밋 전에도 git diff --cached로 스테이징한 새 파일을 볼 수 있어요.
  • not a git repository: 확인할 저장소 폴더로 이동해요.

관련 글

명령과 출력 해석의 근거는 Git 공식 문서의 git status, git branch, git diff예요.