포스트

[이제와서 시작하는 GitHub 마스터하기 - 기초편 #10] 실전 워크플로우: 일상적인 Git 작업 패턴

[이제와서 시작하는 GitHub 마스터하기 - 기초편 #10] 실전 워크플로우: 일상적인 Git 작업 패턴

학습 목표

이 장을 마치면 다음을 할 수 있습니다:

  • ✅ 일상적인 Git 작업 흐름을 이해하고 적용할 수 있습니다
  • ✅ 유용한 Git 명령어와 단축키를 사용할 수 있습니다
  • ✅ 상태 확인 명령어로 프로젝트를 관리할 수 있습니다
  • ✅ 효율적인 일일 워크플로우를 수립할 수 있습니다

지난 편 복습

기초편 #9에서는 git push와 pull을 배웠습니다:

  • git push로 로컬 커밋을 GitHub에 업로드
  • git pull로 원격 변경사항 가져오기
  • 푸시/풀 실패 문제 해결
  • 충돌(Conflict) 해결 방법

1. 실전 워크플로우

일일 작업 패턴

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
# === 아침: 작업 시작 ===
# 1. 최신 상태로 업데이트
git pull origin main

# 2. 현재 상태 확인
git status

# 3. 새 기능 브랜치 생성 (다음 편에서 자세히)
git checkout -b feature/new-feature

# === 작업 중 ===
# 4. 파일 수정 작업

# 5. 변경사항 확인
git status
git diff

# 6. 작은 단위로 커밋
git add .
git commit -m "feat: add login form"

# === 퇴근 전 ===
# 7. 푸시
git push origin feature/new-feature

# 8. Pull Request 생성 (GitHub에서)

프로젝트 시작 워크플로우

새 프로젝트 시작:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 방법 1: GitHub에서 저장소 생성 후 클론
git clone https://github.com/username/my-project.git
cd my-project

# 방법 2: 로컬에서 시작
mkdir my-project
cd my-project
git init
echo "# My Project" > README.md
git add .
git commit -m "Initial commit"

# GitHub에 저장소 생성 후
git remote add origin https://github.com/username/my-project.git
git push -u origin main

기존 프로젝트 참여:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 1. 포크 (본인 계정으로 복사)
# GitHub에서 "Fork" 버튼 클릭

# 2. 클론
git clone https://github.com/your-username/forked-repo.git
cd forked-repo

# 3. 원본 저장소 추가
git remote add upstream https://github.com/original-owner/repo.git

# 4. 최신 상태 유지
git fetch upstream
git merge upstream/main

협업 워크플로우

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
32
33
34
35
# === 오전: 작업 시작 ===
# 1. main 브랜치로 전환
git checkout main

# 2. 최신 코드 받기
git pull origin main

# 3. 새 기능 브랜치 생성
git checkout -b feature/user-profile

# === 작업 중 ===
# 4. 개발 및 커밋 (여러 번)
git add src/profile.js
git commit -m "feat: add profile component"

git add src/profile.css
git commit -m "style: add profile styling"

# === 점심 후: 원본 저장소 변경사항 동기화 ===
# 5. main 최신 상태로 업데이트
git checkout main
git pull origin main

# 6. 내 브랜치로 돌아와서 병합
git checkout feature/user-profile
git merge main
# (충돌 있으면 해결)

# === 작업 완료 ===
# 7. 최종 커밋 및 푸시
git push origin feature/user-profile

# 8. GitHub에서 Pull Request 생성
# 9. 코드 리뷰 받기
# 10. 승인 후 병합

2. 유용한 단축키와 별칭

Git Alias 설정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# .gitconfig에 추가 또는
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

# 이제 짧게 사용 가능
git co main      # git checkout main
git br           # git branch
git ci -m "msg"  # git commit -m "msg"
git st           # git status

# 고급 별칭
git config --global alias.lg "log --oneline --graph --all"
git config --global alias.last "log -1 HEAD"
git config --global alias.unstage "reset HEAD --"
git config --global alias.amend "commit --amend --no-edit"

# 사용 예시
git lg           # 예쁜 로그
git last         # 마지막 커밋
git unstage file.txt  # 스테이징 취소
git amend        # 마지막 커밋에 추가

유용한 단축 명령어

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 스테이징 + 커밋을 한 번에
git commit -am "message"

# 마지막 커밋 메시지 수정
git commit --amend -m "new message"

# 이전 커밋 취소 (파일은 유지)
git reset HEAD~1

# 특정 파일 최신 상태로 복원
git checkout -- filename

# 현재 브랜치 이름 확인
git rev-parse --abbrev-ref HEAD

# 변경된 파일 목록만
git diff --name-only

# 커밋 개수 세기
git rev-list --count HEAD

3. 상태 확인 명령어들

git status 옵션

1
2
3
4
5
6
7
8
9
10
11
12
# 기본 상태
git status

# 짧은 형식
git status -s
# M  modified-file.txt
# A  added-file.txt
# ?? untracked-file.txt

# 브랜치 정보 포함
git status -sb
# ## main...origin/main [ahead 1]

git log 다양한 옵션

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
# 한 줄로 간단히
git log --oneline

# 그래프 형태로
git log --graph --oneline --all

# 최근 n개만
git log -3

# 특정 파일의 히스토리
git log -- filename

# 특정 작성자
git log --author="name"

# 날짜 범위
git log --since="2024-01-01" --until="2024-01-31"

# 통계 포함
git log --stat

# 변경 내용 포함
git log -p

# 키워드 검색
git log --grep="fix"

# 커밋 메시지 한 줄로
git log --oneline --no-merges

git diff 활용

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
# Working Directory vs Staging Area
git diff

# Staging Area vs Repository
git diff --staged
# 또는
git diff --cached

# 특정 커밋과 비교
git diff abc123

# 두 커밋 비교
git diff abc123 def456

# 특정 파일만
git diff filename

# 통계만
git diff --stat

# 파일 이름만
git diff --name-only

# 브랜치 비교
git diff main feature

git show 사용법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 마지막 커밋 상세
git show

# 특정 커밋
git show abc123

# 파일 이름만
git show --name-only abc123

# 통계
git show --stat abc123

# 특정 파일의 특정 커밋 버전
git show abc123:path/to/file

실전 팁: 일일 워크플로우 체크리스트

📋 출근 체크리스트

  • git pull origin main - 최신 코드 받기
  • git status - 현재 상태 확인
  • git checkout -b feature/task-name - 새 브랜치 생성

📋 작업 중 체크리스트

  • 자주 git status로 상태 확인
  • 의미 있는 단위로 커밋
  • 커밋 메시지 명확하게 작성
  • git log --oneline으로 히스토리 확인

📋 퇴근 전 체크리스트

  • 모든 변경사항 커밋 완료
  • git push origin branch-name - 원격에 백업
  • Pull Request 생성 (작업 완료 시)
  • 내일 할 일 TODO 커밋 (선택)

자주 묻는 질문 (FAQ)

Q1. 매일 pull을 해야 하나요?

A: 네, 필수입니다! 특히 팀 프로젝트에서는:

  • 아침 출근 시
  • 긴 회의 후
  • 다른 브랜치에서 작업 시작 전

Q2. 커밋은 얼마나 자주 해야 하나요?

A: 자주 하세요! 권장 기준:

  • 작은 기능 단위마다
  • 1-2시간 작업마다
  • 점심/퇴근 전
  • “의미 있는 변경” 완료 시

Q3. 여러 기능을 동시에 작업하면 안 되나요?

A: 브랜치를 사용하세요! (다음 편에서 상세히)

1
2
3
4
5
git checkout -b feature/login
# 로그인 작업...

git checkout -b feature/signup
# 회원가입 작업...

Q4. Git Alias를 어디에 설정하나요?

A: ~/.gitconfig 파일에 자동 추가됩니다:

1
2
3
4
5
git config --global alias.co checkout
# → ~/.gitconfig에 추가됨

# 직접 편집도 가능
vi ~/.gitconfig

실습 과제

과제 1: 워크플로우 연습

  1. 새 프로젝트 시작
  2. README.md 작성 및 커밋
  3. 3개 파일 추가 (각각 별도 커밋)
  4. git log --oneline --graph로 히스토리 확인

과제 2: Alias 설정

  1. 자주 사용하는 명령어 5개 선택
  2. Alias 설정
  3. 실제로 사용해보기

과제 3: 상태 확인 연습

  1. 파일 수정
  2. git status, git diff 확인
  3. 스테이징 후 git diff --staged 확인
  4. 커밋 후 git show 확인

마무리

축하합니다! 실전 Git 워크플로우를 마스터했습니다.

핵심 요약:

  • 일일 패턴: pull → 작업 → add → commit → push
  • Alias: 자주 쓰는 명령어 단축
  • 상태 확인: status, log, diff, show
  • 습관화: 자주 커밋, 자주 풀, 명확한 메시지

다음 편에서는 Branch(브랜치)의 기본을 배워보겠습니다!

📚 GitHub 마스터하기 시리즈

🌱 기초편 (입문자)

  1. GitHub 소개와 계정 만들기
  2. 프로필 꾸미기와 포트폴리오
  3. 보안 설정과 인증
  4. Repository 이해하기
  5. README 작성법
  6. .gitignore와 라이선스
  7. 첫 커밋과 관리
  8. git add와 commit
  9. git push와 pull
  10. 실전 워크플로우 👉 현재 글
  11. Branch 기본
  12. Merge와 Rebase
  13. 브랜치 전략
  14. Fork와 Clone
  15. Pull Request

💼 실전편 (중급자)

  1. Issues 활용법
  2. Projects와 칸반보드
  3. 코드 리뷰 실전
  4. Discussions 활용
  5. 팀 협업 전략
  6. GitHub Pages 블로그

🚀 고급편 (전문가)

  1. GitHub Actions 입문
  2. Actions 고급 활용
  3. Webhooks와 API
  4. GitHub Apps 개발
  5. 보안 기능 활용
  6. Packages 레지스트리
  7. Codespaces 클라우드 개발
  8. GitHub CLI 마스터
  9. Insights와 Analytics

🏆 심화편 (전문가+)

  1. Submodules와 Subtree
  2. Git Internals 이해
  3. 브랜칭과 릴리스 전략
  4. GraphQL API 활용
  5. GitHub Copilot 마스터
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.