상태의 두 칸 읽기
충돌이 없는 일반 파일에서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: 확인할 저장소 폴더로 이동해요.
관련 글
- 작업 트리, 스테이징 영역, 커밋은 어떻게 다를까요? — 두 diff가 비교하는 대상
- .gitignore에 적었는데 왜 계속 보일까요? — 추적 여부와 제외 규칙
- 현재 커밋 해시 확인하기 — 전체·축약 해시 조회