| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 30 | 31 |
- back-end
- 반복문
- props
- AWS
- java
- 상속
- 조건문
- 개발자
- Nest.js
- Producer
- node.js
- 개발이취미인사람
- 코틀린
- Kotlin
- restful api
- spring boot
- jpa
- 개발이 취미인 사람
- react
- file upload
- component
- It
- front-end
- javascript
- vue
- SWIFT
- Sequelize
- kafka
- state
- swagger
- Today
- Total
개발이 취미인 사람
[Git] - Git 기본 명령어 (init, add, commit, status, log) 본문
개요
안녕하세요. 이번 시간에는 Git의 기본 명령어에 대해 알아보겠습니다. Git을 사용하면서 가장 많이 사용하는 5가지 핵심 명령어인 init, add, commit, status, log를 실습과 함께 살펴보겠습니다. 혹시 이전 시간에 내용을 학습하고 오시지 못 하신 분들은 학습하고 오시는 걸 추천드리겠습니다.
[Git] - Git 설치 및 초기 설정 방법
개요안녕하세요. 이번 시간에는 Git 설치 및 초기 설정 방법에 대해 알아보겠습니다. 혹시 이전 시간에 내용을 학습하고 오시지 못 하신 분들은 학습하고 오시는 걸 추천드리겠습니다. [Git] - Git
any-ting.tistory.com
- Git 기본 워크플로우
Git의 기본 명령어를 배우기 전에 전체적인 워크플로우를 이해하면 좋습니다.
Working Directory Staging Area Repository
(작업 디렉토리) (스테이징 영역) (저장소)
| | |
| git add | git commit |
| ----------------> | ------------> |
| | |
[git status] : 현재 상태 확인
[git log] : 커밋 이력 확인
- git init
git init 명령어는 새로운 Git 저장소를 생성합니다. 이 명령어를 실행하면 현재 디렉토리에 .git 폴더가 생성되며, Git이 해당 프로젝트의 버전을 관리하기 시작합니다.
기본 사용법
# 새 프로젝트 디렉토리 생성
mkdir my-project
cd my-project
# Git 저장소 초기화
git init
# 출력 예시
Initialized empty Git repository in /Users/ryan/my-project/.git/
.git 폴더 확인
# .git 폴더 확인 (숨김 폴더)
ls -la
# 출력 예시
drwxr-xr-x 9 ryan staff 288 1 1 12:00 .git
.git 폴더에는 Git이 버전 관리를 위해 필요한 모든 정보가 저장됩니다.
# .git 폴더 내부 구조
ls .git/
# 출력 예시
HEAD
config
description
hooks/
info/
objects/
refs/
폴더/파일 설명
| HEAD | 현재 체크아웃된 브랜치를 가리킴 |
| config | 저장소 설정 정보 |
| objects/ | 모든 컨텐츠(커밋, 트리, 블롭)를 저장 |
| refs/ | 브랜치와 태그 정보 |
| hooks/ | Git 훅 스크립트 |
⚠️ 주의: .git 폴더를 삭제하면 모든 버전 관리 이력이 사라집니다!
- git status
git status 명령어는 현재 작업 디렉토리의 상태를 확인합니다. 어떤 파일이 변경되었는지, 스테이징되었는지, 커밋할 준비가 되었는지 등을 보여줍니다.
기본 사용법
# 현재 상태 확인
git status
상태별 출력 예시
1. 깨끗한 상태 (변경 없음)
git status
# 출력
On branch main
nothing to commit, working tree clean
2. 새 파일 생성 후 (Untracked)
# 새 파일 생성
echo "Hello Git" > README.md
git status
# 출력
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
nothing added to commit but untracked files present (use "git add" to track)
3. 파일 스테이징 후 (Staged)
git add README.md
git status
# 출력
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: README.md
4. 파일 수정 후 (Modified)
# 이미 커밋된 파일 수정
echo "추가 내용" >> README.md
git status
# 출력
On branch main
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: README.md
간단한 상태 확인
-s 또는 --short 옵션으로 간략하게 확인할 수 있습니다.
git status -s
# 출력 예시
M README.md # 수정됨 (스테이징 안됨)
M app.js # 수정됨 (스테이징됨)
A new-file.txt # 새 파일 (스테이징됨)
?? untracked.txt # 추적되지 않는 파일
기호 의미
| ?? | Untracked (추적되지 않음) |
| A | Added (새로 추가됨) |
| M | Modified (수정됨) |
| D | Deleted (삭제됨) |
| R | Renamed (이름 변경) |
- git add
git add 명령어는 작업 디렉토리의 변경 사항을 스테이징 영역에 추가합니다. 커밋하기 전에 반드시 거쳐야 하는 단계입니다.
기본 사용법
# 특정 파일 추가
git add 파일명
# 여러 파일 추가
git add 파일1 파일2 파일3
# 특정 디렉토리의 모든 파일 추가
git add 디렉토리명/
# 현재 디렉토리의 모든 변경 사항 추가
git add .
# 모든 변경 사항 추가 (삭제된 파일 포함)
git add -A
# 또는
git add --all
실습 예시
# 프로젝트 구조 생성
mkdir src
echo "console.log('Hello');" > src/index.js
echo "body { margin: 0; }" > src/style.css
echo "# My Project" > README.md
# 상태 확인
git status
# 출력
Untracked files:
README.md
src/
# 특정 파일만 스테이징
git add README.md
# src 폴더 전체 스테이징
git add src/
# 상태 확인
git status
# 출력
Changes to be committed:
new file: README.md
new file: src/index.js
new file: src/style.css
대화형 모드
-p 옵션으로 변경 사항을 하나씩 확인하며 스테이징할 수 있습니다.
git add -p
# 각 변경 사항에 대해 선택
# y: 스테이징
# n: 스테이징 안함
# s: 더 작은 단위로 분할
# q: 종료
스테이징 취소
실수로 스테이징한 파일을 취소하는 방법입니다.
# 특정 파일 스테이징 취소
git restore --staged 파일명
# 모든 스테이징 취소
git restore --staged .
# Git 2.23 이전 버전
git reset HEAD 파일명
- git commit
git commit 명령어는 스테이징 영역의 변경 사항을 저장소에 기록합니다. 각 커밋은 고유한 해시값(SHA-1)을 가지며, 프로젝트의 스냅샷으로 저장됩니다.
기본 사용법
# 커밋 메시지와 함께 커밋
git commit -m "커밋 메시지"
# 에디터를 열어 커밋 메시지 작성
git commit
# add와 commit을 동시에 (이미 추적 중인 파일만)
git commit -am "커밋 메시지"
실습 예시
# 파일 생성 및 스테이징
echo "# My Project" > README.md
git add README.md
# 커밋
git commit -m "docs: README 파일 추가"
# 출력 예시
[main (root-commit) a1b2c3d] docs: README 파일 추가
1 file changed, 1 insertion(+)
create mode 100644 README.md
커밋 메시지 컨벤션
좋은 커밋 메시지는 협업과 유지보수에 매우 중요합니다. 널리 사용되는 컨벤션을 소개합니다.
# 형식
<type>: <subject>
# 예시
feat: 로그인 기능 추가
fix: 회원가입 버그 수정
docs: README 업데이트
style: 코드 포맷팅
refactor: 사용자 서비스 리팩토링
test: 유저 테스트 코드 추가
chore: 패키지 업데이트
타입 설명
| feat | 새로운 기능 추가 |
| fix | 버그 수정 |
| docs | 문서 수정 |
| style | 코드 포맷팅 (기능 변경 없음) |
| refactor | 코드 리팩토링 |
| test | 테스트 코드 추가 |
| chore | 빌드, 설정 파일 수정 |
커밋 수정
마지막 커밋을 수정하는 방법입니다.
# 마지막 커밋 메시지 수정
git commit --amend -m "새로운 커밋 메시지"
# 파일을 추가하고 마지막 커밋에 포함
git add forgotten-file.js
git commit --amend --no-edit
⚠️ 주의: 이미 원격 저장소에 push한 커밋을 amend하면 문제가 발생할 수 있습니다. 로컬에서만 사용하세요.
- git log
git log 명령어는 커밋 이력을 확인합니다. 프로젝트의 변경 히스토리를 추적하는 데 필수적인 명령어입니다.
기본 사용법
git log
# 출력 예시
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0 (HEAD -> main)
Author: RyanSin <ryan@example.com>
Date: Mon Jan 1 12:00:00 2024 +0900
feat: 사용자 인증 기능 추가
commit b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1
Author: RyanSin <ryan@example.com>
Date: Sun Dec 31 15:30:00 2023 +0900
init: 프로젝트 초기 설정
유용한 옵션들
1. 한 줄로 보기
git log --oneline
# 출력
a1b2c3d feat: 사용자 인증 기능 추가
b2c3d4e init: 프로젝트 초기 설정
2. 그래프로 보기
git log --oneline --graph
# 출력 (브랜치가 있는 경우)
* a1b2c3d (HEAD -> main) feat: 메인 기능 추가
* c3d4e5f Merge branch 'feature/login'
|\
| * d4e5f6g feat: 로그인 구현
| * e5f6g7h feat: 로그인 UI 추가
|/
* f6g7h8i init: 프로젝트 시작
3. 최근 N개만 보기
# 최근 5개 커밋만 보기
git log -5
# 한 줄로 최근 10개
git log --oneline -10
4. 특정 파일의 이력 보기
git log -- 파일명
# 예시
git log -- src/index.js
5. 변경 내용과 함께 보기
# 변경된 파일 목록
git log --stat
# 변경된 내용까지 상세히
git log -p
6. 특정 기간 조회
# 최근 2주간 커밋
git log --since="2 weeks ago"
# 특정 날짜 이후
git log --after="2024-01-01"
# 특정 날짜 이전
git log --before="2024-06-01"
7. 작성자로 검색
git log --author="RyanSin"
8. 커밋 메시지로 검색
git log --grep="로그인"
예쁘게 커스텀하기
# 커스텀 포맷
git log --pretty=format:"%h - %an, %ar : %s"
# 출력
a1b2c3d - RyanSin, 2 hours ago : feat: 사용자 인증 기능 추가
b2c3d4e - RyanSin, 1 day ago : init: 프로젝트 초기 설정
포맷 설명
| %h | 짧은 커밋 해시 |
| %H | 전체 커밋 해시 |
| %an | 작성자 이름 |
| %ae | 작성자 이메일 |
| %ar | 상대적 작성 시간 |
| %s | 커밋 메시지 제목 |
- 전체 실습
지금까지 배운 명령어를 활용한 전체 실습입니다.
# 1. 프로젝트 생성 및 Git 초기화
mkdir git-practice
cd git-practice
git init
# 2. 파일 생성
echo "# Git Practice" > README.md
echo "console.log('Hello');" > app.js
# 3. 상태 확인
git status
# 4. 스테이징
git add .
# 5. 상태 재확인
git status
# 6. 첫 번째 커밋
git commit -m "init: 프로젝트 초기 설정"
# 7. 파일 수정
echo "console.log('World');" >> app.js
# 8. 변경 확인
git status
# 9. 스테이징 및 커밋
git add app.js
git commit -m "feat: app.js에 World 출력 추가"
# 10. 로그 확인
git log --oneline
# 출력 예시
b2c3d4e feat: app.js에 World 출력 추가
a1b2c3d init: 프로젝트 초기 설정
마무리
이번 시간에는 Git의 기본 명령어 5가지(init, add, commit, status, log)에 대해 알아봤습니다. 이 명령어들은 Git을 사용하면서 가장 많이 사용하게 될 핵심 명령어들입니다. 실습을 통해 충분히 익숙해지시길 추천드립니다.
다음 시간에는 .gitignore 설정 방법에 대해 알아보겠습니다.
참고 자료
'컴퓨터공학 > Git' 카테고리의 다른 글
| [Git] - 브랜치 병합(Merge) 방법 (0) | 2025.12.20 |
|---|---|
| [Git] - 브랜치(Branch) 개념과 생성/삭제 (0) | 2025.12.19 |
| [Git] - .gitignore 설정 방법 (0) | 2025.12.18 |
| [Git] - Git 설치 및 초기 설정 방법 (0) | 2025.12.16 |
| [Git] - Git이란? 버전 관리 시스템 개념 (1) | 2025.12.15 |