[GitHub 100일 챌린지] Day 29 - git commit으로 저장하기
[GitHub 100일 챌린지] Day 29 - git commit으로 저장하기
100일 챌린지 Day 29 - git commit으로 변경사항을 영구히 저장합니다
배울 내용
- git commit 기본 사용법
- commit 옵션과 활용법
- 커밋 수정과 관리
Topic1. git commit 기본 사용법
git commit = Staging Area → Repository
스테이징된 변경사항을 히스토리에 저장합니다.
기본 커밋
에디터로 커밋:
1
git commit
실행 결과:
1
2
3
4
1. 기본 에디터 열림 (Vim, VS Code 등)
2. 커밋 메시지 입력
3. 저장 후 종료
4. 커밋 완료
한 줄 메시지로 커밋:
1
git commit -m "커밋 메시지"
예시:
1
2
git add feature.js
git commit -m "Add user login feature"
다중 라인 메시지:
1
2
3
git commit -m "Add user login feature" -m "- JWT authentication
- Password hashing
- Session management"
커밋 구조
커밋이 포함하는 정보:
1
2
3
4
5
1. 변경 내용 (스냅샷)
2. 작성자 정보
3. 작성 시간
4. 커밋 메시지
5. 부모 커밋 (이전 커밋)
커밋 확인:
1
2
3
4
5
6
7
8
9
10
11
# 최근 커밋 보기
git log
# 최근 1개만
git log -1
# 간단히 보기
git log --oneline
# 그래프로 보기
git log --graph --oneline
해보기: 첫 커밋 만들기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1. 새 저장소 초기화
mkdir my-project
cd my-project
git init
# 2. 파일 생성
echo "# My Project" > README.md
# 3. 스테이징
git add README.md
# 4. 커밋
git commit -m "Initial commit"
# 5. 커밋 확인
git log
출력:
1
2
3
4
5
commit abc123def456... (HEAD -> main)
Author: Your Name <your@email.com>
Date: Mon Jan 29 09:00:00 2025 +0900
Initial commit
결과: 첫 번째 커밋이 생성되어 히스토리가 시작됩니다
Topic2. commit 옵션과 활용법
다양한 상황에서 사용하는 커밋 옵션들입니다.
add + commit 동시 실행
추적 중인 파일 자동 스테이징:
1
2
3
git commit -a -m "메시지"
# 또는
git commit -am "메시지"
주의사항:
1
2
3
4
5
6
7
8
✅ 수정된 파일 → 자동 스테이징
❌ 새 파일 (Untracked) → 포함 안 됨
따라서:
git add .
git commit -m "message"
보다는 덜 안전
언제 사용?
1
2
3
간단한 수정사항일 때
모든 수정을 한번에 커밋할 때
새 파일이 없을 때
빈 커밋
변경사항 없이 커밋:
1
git commit --allow-empty -m "Empty commit"
사용 예:
1
2
3
- CI/CD 재실행 트리거
- 브랜치 북마크
- 테스트 목적
커밋 날짜 수정
특정 날짜로 커밋:
1
git commit --date="2025-01-29 10:00:00" -m "메시지"
작성자 변경
다른 작성자로 커밋:
1
git commit --author="Name <email@example.com>" -m "메시지"
해보기: 다양한 커밋 옵션
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1. 파일 수정
echo "Update" >> README.md
# 2. -am 옵션 (자동 스테이징)
git commit -am "Update README"
# 3. 상태 확인
git status # clean
# 4. 새 파일 추가
echo "New" > new.txt
# 5. -am은 새 파일 제외
git commit -am "Try to add new file" # 커밋 안 됨
# 6. 새 파일은 명시적으로 add
git add new.txt
git commit -m "Add new file"
결과: 각 옵션의 동작 방식을 이해합니다
Topic3. 커밋 수정과 관리
이미 만든 커밋을 수정하는 방법입니다.
마지막 커밋 수정
커밋 메시지만 수정:
1
git commit --amend -m "새로운 메시지"
파일 추가하고 커밋 수정:
1
2
3
4
5
# 1. 파일 잊었을 때
git add forgotten-file.txt
# 2. 마지막 커밋에 추가
git commit --amend --no-edit
메시지와 파일 동시 수정:
1
2
git add forgotten-file.txt
git commit --amend -m "새 메시지"
amend 주의사항
1
2
3
4
5
6
7
8
9
⚠️ 주의:
- 이미 push한 커밋은 amend 하지 말 것
- 히스토리가 바뀌므로 협업 시 문제 발생
- 로컬에서만 사용
안전한 경우:
✅ 아직 push 안 한 커밋
✅ 혼자 작업하는 브랜치
✅ 실수를 바로 수정할 때
커밋 정보 확인
상세 정보:
1
2
3
4
5
6
7
8
# 마지막 커밋 상세
git show
# 특정 커밋
git show abc123
# 커밋에서 바뀐 파일
git show --name-only
변경 내용 보기:
1
2
3
4
5
# 마지막 커밋 diff
git show HEAD
# 2개 전 커밋
git show HEAD~2
실전 워크플로우
시나리오 1: 커밋 메시지 오타
1
2
3
4
5
# 1. 커밋
git commit -m "Add logni feature" # 오타!
# 2. 바로 수정
git commit --amend -m "Add login feature"
시나리오 2: 파일 빠뜨림
1
2
3
4
5
6
7
8
9
# 1. 커밋
git add feature.js
git commit -m "Add login feature"
# 2. 파일 빠뜨린 것 발견
git add feature.test.js
# 3. 마지막 커밋에 추가
git commit --amend --no-edit
시나리오 3: 여러 번 수정
1
2
3
4
5
6
7
8
9
10
11
12
# 1. 첫 커밋
git commit -m "WIP: login feature"
# 2. 추가 작업
# ... 코드 수정 ...
git add .
git commit --amend -m "Add complete login feature"
# 3. 또 수정
# ... 버그 수정 ...
git add .
git commit --amend --no-edit # 메시지 유지
커밋 히스토리 탐색
로그 보기 옵션:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 그래프 보기
git log --graph --oneline --all
# 통계 포함
git log --stat
# 패치(diff) 포함
git log -p
# 최근 3개
git log -3
# 특정 파일 히스토리
git log -- file.txt
# 작성자 필터
git log --author="Name"
# 날짜 필터
git log --since="2025-01-01"
git log --until="2025-01-31"
예쁘게 보기:
1
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
별칭으로 등록:
1
2
3
4
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
# 사용
git lg
해보기: 커밋 수정 실습
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1. 커밋
echo "Feature" > feature.js
git add feature.js
git commit -m "Add feature"
# 2. 테스트 파일 빠뜨림 발견
echo "Test" > feature.test.js
git add feature.test.js
# 3. 마지막 커밋에 추가
git commit --amend --no-edit
# 4. 커밋 내용 확인
git show --name-only
# 출력:
# feature.js
# feature.test.js
해보기: 히스토리 탐색
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 "1" > file1.txt
git add file1.txt
git commit -m "Add file1"
echo "2" > file2.txt
git add file2.txt
git commit -m "Add file2"
echo "3" > file3.txt
git add file3.txt
git commit -m "Add file3"
# 2. 로그 보기
git log --oneline
# 3. 그래프로 보기
git log --graph --oneline
# 4. 통계 보기
git log --stat
# 5. 특정 파일 히스토리
git log -- file1.txt
결과: 커밋을 수정하고 히스토리를 효과적으로 탐색할 수 있습니다
정리
완료 체크:
- git commit으로 변경사항을 저장할 수 있다
- 다양한 커밋 옵션을 상황에 맞게 사용할 수 있다
- 커밋을 수정하고 히스토리를 탐색할 수 있다
핵심 명령어:
1
2
3
4
5
6
git commit -m "메시지" # 기본 커밋
git commit -am "메시지" # add + commit
git commit --amend # 마지막 커밋 수정
git log # 히스토리 보기
git log --oneline # 간단히 보기
git show # 커밋 상세 보기
커밋 원칙:
1
2
3
4
5
1. 의미있는 단위로 커밋
2. 명확한 커밋 메시지
3. 관련 파일만 포함
4. 작동하는 상태로 커밋
5. push 전에는 amend 가능
다음: Day 30 - 커밋 메시지 작성법 →
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
