[GitHub 100일 챌린지] Day 36 - git status 완벽 가이드
[GitHub 100일 챌린지] Day 36 - git status 완벽 가이드
100일 챌린지 Day 36 - 현재 작업 상태를 정확하게 파악합니다
배울 내용
- status 출력 읽기
- short/long 형식
- status 활용 팁
Topic1. status 출력 읽기
git status = 현재 작업 상태 요약
Git 프로젝트의 현재 상태를 확인하는 가장 기본적인 명령어입니다.
기본 사용법
1
git status
출력 예시:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: README.md
new file: feature.js
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)
modified: index.html
deleted: old.css
Untracked files:
(use "git add <file>..." to include in what will be committed)
temp.txt
.env
출력 구조 이해하기
1. 브랜치 정보:
1
2
On branch main
Your branch is up to date with 'origin/main'.
의미:
- 현재 브랜치:
main - Remote와 동기화 상태
2. Staging Area (커밋 예정):
1
2
3
Changes to be committed:
modified: README.md
new file: feature.js
의미:
- 다음 커밋에 포함될 파일들
git add로 추가한 파일들- 초록색으로 표시됨
3. Working Directory (수정됨):
1
2
3
Changes not staged for commit:
modified: index.html
deleted: old.css
의미:
- 수정했지만 아직 staging 안 함
git add필요- 빨간색으로 표시됨
4. Untracked Files (추적 안 됨):
1
2
3
Untracked files:
temp.txt
.env
의미:
- Git이 아직 관리하지 않는 새 파일
.gitignore에 추가 고려- 빨간색으로 표시됨
상태별 색상 코드
1
2
3
초록색 = Staged (커밋 준비 완료)
빨간색 = Modified/Untracked (아직 staging 안 됨)
회색 = Ignored (.gitignore에 있음)
해보기: 실제 프로젝트 상태 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 1. 새 파일 만들기
echo "Test" > test.txt
# 2. 기존 파일 수정
echo "Update" >> README.md
# 3. 상태 확인
git status
# 출력:
# Untracked files:
# test.txt
# Changes not staged for commit:
# modified: README.md
# 4. test.txt staging
git add test.txt
git status
# 출력:
# Changes to be committed:
# new file: test.txt
# Changes not staged for commit:
# modified: README.md
결과: 파일이 어떤 상태인지 명확하게 구분할 수 있습니다
Topic2. short/long 형식
long 형식 = 상세한 설명, short 형식 = 간결한 코드
상황에 따라 적절한 출력 형식을 선택할 수 있습니다.
long 형식 (기본)
1
git status
장점:
1
2
3
4
✅ 자세한 설명 제공
✅ 초보자 친화적
✅ 각 파일의 상태 설명
✅ 다음 단계 안내
단점:
1
2
3
❌ 출력이 길고 장황함
❌ 파일 많을 때 보기 어려움
❌ 스크립트에서 파싱 어려움
short 형식
1
2
3
git status -s
# 또는
git status --short
출력 예시:
1
2
3
4
5
6
M README.md
A feature.js
M index.html
D old.css
?? temp.txt
?? .env
short 형식 코드 의미
첫 번째 컬럼 (Staging Area):
1
2
3
4
5
M = Modified (staged)
A = Added (staged)
D = Deleted (staged)
R = Renamed (staged)
C = Copied (staged)
두 번째 컬럼 (Working Directory):
1
2
M = Modified (not staged)
D = Deleted (not staged)
특수 코드:
1
2
?? = Untracked (새 파일)
!! = Ignored (.gitignore)
코드 조합 예시
1
2
3
4
5
6
7
8
9
git status -s
# 출력:
M README.md # Staged, 수정됨
M index.html # Not staged, 수정됨
MM style.css # Staged + 추가 수정
A new.js # Staged, 새 파일
D old.css # Not staged, 삭제됨
?? temp.txt # Untracked
MM 의미:
1
2
3
4
5
6
M = Staging Area에 수정본 있음
M = Working Directory에 추가 수정 있음
즉:
1. git add style.css 했음
2. 그 후 또 수정했음
branch 정보 포함
1
2
3
git status -sb
# 또는
git status --short --branch
출력:
1
2
3
## main...origin/main
M README.md
?? temp.txt
## main...origin/main 의미:
- 현재 브랜치:
main - 추적 브랜치:
origin/main - 동기화 상태 표시
동기화 상태 코드:
1
2
3
## main...origin/main [ahead 2] # 2개 커밋 앞섬
## main...origin/main [behind 3] # 3개 커밋 뒤쳐짐
## main...origin/main [ahead 1, behind 2] # 1개 앞서고 2개 뒤쳐짐
해보기: long vs short 비교
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1. 여러 파일 수정
echo "A" > file1.txt
echo "B" >> README.md
git add file1.txt
# 2. long 형식
git status
# 3. short 형식
git status -s
# M file1.txt
# ?? README.md
# 4. branch 포함 short
git status -sb
# ## main...origin/main
# M file1.txt
# ?? README.md
결과: short 형식이 훨씬 간결하고 파싱하기 쉽습니다
Topic3. status 활용 팁
git status = 작업 흐름의 나침반
실전에서 유용한 활용 방법들을 배웁니다.
팁 1: 자주 확인하기
작업 전후로 항상 확인:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 작업 전
git status
# 깨끗한 상태 확인
# 작업 중
# 파일 수정...
git status
# 어떤 파일이 변경됐는지 확인
# 커밋 전
git status
# 의도한 파일만 staging 됐는지 확인
# 커밋 후
git status
# 모든 변경사항이 커밋됐는지 확인
팁 2: 자동화 (Alias 설정)
1
2
3
4
5
6
7
# 짧은 형식 alias
git config --global alias.s 'status -s'
git config --global alias.sb 'status -sb'
# 사용
git s # git status -s
git sb # git status -sb
팁 3: 스크립트에서 활용
파일 목록 추출:
1
2
3
4
5
6
7
8
# Modified 파일만
git status -s | grep "^ M" | cut -c4-
# Untracked 파일만
git status -s | grep "^??" | cut -c4-
# Staged 파일만
git status -s | grep "^M " | cut -c4-
조건부 작업:
1
2
3
4
5
6
7
8
# 변경사항 있을 때만 커밋
if [ -n "$(git status -s)" ]; then
echo "변경사항 있음"
git add .
git commit -m "Auto commit"
else
echo "변경사항 없음"
fi
팁 4: 특정 경로만 확인
1
2
3
4
5
6
7
8
# src/ 디렉토리만
git status src/
# 특정 파일만
git status README.md
# 여러 경로
git status src/ docs/ README.md
팁 5: porcelain 형식 (기계 파싱용)
1
git status --porcelain
특징:
1
2
3
✅ 버전 간 일관된 출력
✅ 스크립트 파싱에 최적화
✅ 사람이 읽기는 어려움
활용 예시:
1
2
3
4
5
6
# CI/CD에서 변경사항 감지
CHANGES=$(git status --porcelain)
if [ -n "$CHANGES" ]; then
echo "Uncommitted changes detected!"
exit 1
fi
팁 6: ignored 파일 표시
1
git status --ignored
.gitignore에 있는 파일까지 모두 표시합니다.
출력 예시:
1
2
3
4
5
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
node_modules/
.env
*.log
팁 7: 상태 확인 체크리스트
커밋 전 체크리스트:
1
2
3
4
5
6
7
8
9
# 1. 상태 확인
git status
# 2. 의도한 파일만 staged?
# 3. 민감한 정보 없음?
# 4. 불필요한 파일 없음?
# 5. 문제 없으면 커밋
git commit -m "..."
push 전 체크리스트:
1
2
3
4
5
6
7
8
9
10
11
12
13
# 1. 로컬 상태 확인
git status
# 2. remote와 비교
git status -sb
# [ahead 3] → push 필요
# [behind 2] → pull 필요
# 3. 커밋 안 된 것 없음?
# 4. 테스트 통과?
# 5. push
git push
해보기: 실전 워크플로우
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 1. 작업 시작 전
git status
# nothing to commit, working tree clean
# 2. 파일 수정
vim index.html
# 3. 바로 확인
git s
# M index.html
# 4. staging
git add index.html
# 5. 다시 확인
git s
# M index.html
# 6. 커밋
git commit -m "Update homepage"
# 7. 최종 확인
git s
# nothing to commit, working tree clean
# 8. remote 확인
git sb
# ## main...origin/main [ahead 1]
# → push 필요!
결과: git status를 자주 사용하면 실수를 줄일 수 있습니다
정리
완료 체크:
- status 출력의 각 섹션 의미를 안다
- long/short 형식을 상황에 맞게 사용할 수 있다
- status를 작업 흐름에 통합할 수 있다
핵심 명령어:
1
2
3
4
5
6
7
8
9
10
git status # 상세한 상태 보기
git status -s # 간결한 상태 보기
git status -sb # branch 정보 포함
git status --porcelain # 스크립트용 출력
git status --ignored # ignored 파일 포함
git status <path> # 특정 경로만
# Alias 설정 (권장)
git config --global alias.s 'status -s'
git config --global alias.sb 'status -sb'
상태 코드 요약:
1
2
3
4
5
6
7
8
9
10
11
12
Long 형식:
Changes to be committed → Staged (커밋 준비)
Changes not staged → Modified (수정됨)
Untracked files → 새 파일
Short 형식:
M = Staged Modified
M = Not Staged Modified
MM = Both Staged + Modified
A = Added
D = Deleted
?? = Untracked
실전 팁:
1
2
3
4
5
1. 작업 전후로 항상 확인
2. git s/git sb alias 설정
3. 커밋 전 반드시 확인
4. remote 동기화 상태 확인
5. 스크립트는 --porcelain 사용
다음: Day 37 - git log 히스토리 보기 →
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
