[GitHub 100일 챌린지] Day 28 - git add로 스테이징하기
[GitHub 100일 챌린지] Day 28 - git add로 스테이징하기
100일 챌린지 Day 28 - git add로 파일을 스테이징 영역에 추가합니다
배울 내용
- git add의 다양한 사용법
- 파일 선택과 패턴 매칭
- 실전 스테이징 전략
Topic1. git add 기본 사용법
git add = Working Directory → Staging Area
파일을 커밋 준비 상태로 만듭니다.
기본 명령어
단일 파일:
1
git add file.txt
여러 파일:
1
git add file1.txt file2.txt file3.txt
현재 디렉토리 모든 파일:
1
git add .
프로젝트 전체:
1
2
3
git add -A
# 또는
git add --all
각 명령어 차이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
git add file.txt
→ 특정 파일만
git add .
→ 현재 디렉토리와 하위 디렉토리
(삭제된 파일 포함)
git add -A
→ 프로젝트 전체
(어디서 실행하든 동일)
git add *
→ 숨김 파일 제외
(.gitignore 등 제외됨)
해보기: 기본 스테이징
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 1. 파일 3개 생성
echo "A" > a.txt
echo "B" > b.txt
echo "C" > c.txt
# 2. 상태 확인
git status
# 3. a.txt만 스테이징
git add a.txt
# 4. 상태 확인
git status
# 5. 나머지 모두 스테이징
git add .
# 6. 최종 상태 확인
git status
출력:
1
2
3
4
Changes to be committed:
new file: a.txt
new file: b.txt
new file: c.txt
결과: git add로 선택적으로 파일을 스테이징할 수 있습니다
Topic2. 파일 선택과 패턴 매칭
특정 조건에 맞는 파일만 스테이징할 수 있습니다.
확장자로 선택
JavaScript 파일만:
1
git add *.js
TypeScript 파일만:
1
git add *.ts *.tsx
CSS/SCSS 파일:
1
git add *.css *.scss
디렉토리 단위
특정 폴더 전체:
1
2
git add src/
git add components/
특정 폴더의 특정 파일:
1
2
git add src/*.js
git add components/**/*.tsx
패턴 매칭
모든 .json 파일:
1
git add **/*.json
test가 포함된 파일:
1
git add *test*
복잡한 패턴:
1
2
# src 폴더의 모든 .js, .ts 파일
git add src/**/*.{js,ts}
수정된 파일만 스테이징
추적 중인 수정 파일만:
1
2
3
git add -u
# 또는
git add --update
차이점:
1
2
3
4
5
6
7
8
9
git add .
→ 새 파일 + 수정 파일 + 삭제 파일
git add -u
→ 수정 파일 + 삭제 파일만
(새 파일 제외)
git add -A
→ 프로젝트 전체 모든 변경사항
해보기: 패턴 매칭 실습
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 1. 다양한 파일 생성
mkdir src test
echo "code" > src/app.js
echo "code" > src/utils.js
echo "test" > test/app.test.js
echo "style" > style.css
echo "doc" > README.md
# 2. .js 파일만 스테이징
git add *.js **/*.js
# 3. 상태 확인
git status
# 4. 나머지 파일도 추가
git add .
# 5. 최종 상태
git status
결과: 패턴을 사용해 원하는 파일만 선택적으로 스테이징할 수 있습니다
Topic3. 실전 스테이징 전략
효과적인 스테이징 방법과 팁입니다.
부분 스테이징 (Interactive)
대화형 모드:
1
2
3
git add -p
# 또는
git add --patch
사용 시나리오:
1
2
한 파일에 여러 수정 사항이 있을 때
일부만 커밋하고 싶은 경우
대화형 옵션:
1
2
3
4
5
6
y: 이 변경사항 스테이징
n: 스킵
q: 종료
a: 이 파일의 모든 변경사항 스테이징
d: 이 파일의 모든 변경사항 스킵
s: 더 작은 단위로 분할
해보기: 부분 스테이징
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1. 파일 수정
echo "Line 1" > file.txt
git add file.txt
git commit -m "Add line 1"
# 2. 여러 줄 추가
echo "Line 2" >> file.txt
echo "Line 3" >> file.txt
# 3. 부분 스테이징
git add -p file.txt
# 대화형 모드에서:
# - 원하는 부분만 'y'
# - 원하지 않는 부분은 'n'
스테이징 취소
전체 취소:
1
2
3
git restore --staged .
# 또는 (Git 2.23 이전)
git reset
특정 파일만 취소:
1
2
3
git restore --staged file.txt
# 또는
git reset file.txt
해보기: 취소하기
1
2
3
4
5
6
7
8
9
10
11
# 1. 파일 스테이징
git add file.txt
# 2. 상태 확인
git status
# 3. 스테이징 취소
git restore --staged file.txt
# 4. 상태 확인
git status
실전 워크플로우
시나리오 1: 기능 단위 커밋
1
2
3
4
5
6
7
# 기능 A 관련 파일만
git add src/featureA.js test/featureA.test.js
git commit -m "Implement feature A"
# 기능 B 관련 파일
git add src/featureB.js test/featureB.test.js
git commit -m "Implement feature B"
시나리오 2: 파일 종류별 커밋
1
2
3
4
5
6
7
8
9
10
11
# 코드 변경
git add src/**/*.js
git commit -m "Update business logic"
# 스타일 변경
git add **/*.css
git commit -m "Update styles"
# 문서 변경
git add *.md docs/
git commit -m "Update documentation"
시나리오 3: 검토 후 스테이징
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1. 변경사항 확인
git status
git diff
# 2. 파일별로 확인하며 추가
git add -p
# 3. 스테이징된 내용 재확인
git diff --staged
# 4. 문제 있으면 취소
git restore --staged problem-file.js
# 5. 최종 커밋
git commit
주의사항
피해야 할 패턴:
1
2
3
4
5
6
7
# ❌ 무분별한 전체 추가
git add .
git commit -m "update"
# ❌ 검토 없이 추가
git add -A
git commit -m "fix"
권장 패턴:
1
2
3
4
5
6
7
8
9
10
# ✅ 변경사항 확인
git status
git diff
# ✅ 의미있는 단위로 추가
git add src/auth/*.js
git commit -m "Add JWT authentication"
# ✅ 스테이징 내용 재확인
git diff --staged
자주 하는 실수:
1
2
3
4
5
6
7
8
1. .env, 비밀키 등 민감한 파일 추가
→ .gitignore 미리 설정
2. node_modules 등 큰 폴더 추가
→ .gitignore에 포함
3. 관련 없는 파일들 한꺼번에 추가
→ 기능/목적별로 나누기
해보기: 종합 실습
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
# 1. 여러 파일 생성
echo "auth" > src/auth.js
echo "db" > src/db.js
echo "test" > test/auth.test.js
echo "doc" > README.md
echo "secret" > .env
# 2. .gitignore 설정
echo ".env" > .gitignore
# 3. 코드만 스테이징
git add src/*.js
# 4. 상태 확인
git status
# 5. 테스트 추가
git add test/
# 6. 최종 확인
git diff --staged
# 7. 커밋
git commit -m "Add auth and db modules with tests"
# 8. 문서 따로 커밋
git add README.md
git commit -m "Update README"
결과: 체계적인 스테이징 전략으로 깔끔한 커밋 히스토리를 만들 수 있습니다
정리
완료 체크:
- git add의 다양한 옵션을 사용할 수 있다
- 패턴 매칭으로 파일을 선택할 수 있다
- 상황에 맞는 스테이징 전략을 알고 있다
핵심 명령어:
1
2
3
4
5
6
git add file.txt # 단일 파일
git add . # 현재 디렉토리
git add -A # 전체 프로젝트
git add -p # 대화형 모드
git add -u # 수정 파일만
git restore --staged . # 스테이징 취소
스테이징 전략:
1
2
3
4
1. 변경사항 확인 (git status, git diff)
2. 의미있는 단위로 선택
3. 스테이징 내용 검토 (git diff --staged)
4. 커밋 전 최종 확인
다음: Day 29 - git commit으로 저장 →
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
