포스트

[GitHub 100일 챌린지] Day 28 - git add로 스테이징하기

[GitHub 100일 챌린지] Day 28 - git add로 스테이징하기

100일 챌린지 Day 28 - git add로 파일을 스테이징 영역에 추가합니다

배울 내용

  1. git add의 다양한 사용법
  2. 파일 선택과 패턴 매칭
  3. 실전 스테이징 전략

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 라이센스를 따릅니다.