본문으로 건너뛰기

Git Command Helper

복잡한 Git 명령어를 시각적 인터페이스로 쉽게 생성합니다. Git 초보자부터 고급 사용자까지 유용한 도구입니다.

Usage Tips

  • Always check current branch before running commands
  • Use --hard reset carefully as it discards changes
  • Interactive rebase allows you to modify commit history
  • Cherry-pick applies specific commits from other branches

주요 기능

  • 6가지 카테고리: Branch, Commit, Stash, Reset, Rebase, Cherry-pick
  • 시각적 인터페이스: 복잡한 옵션을 쉽게 선택
  • 실시간 생성: 설정에 따라 즉시 명령어 생성
  • 명령어 설명: 각 명령어의 동작 설명 제공
  • 원클릭 복사: 생성된 명령어를 클립보드에 복사

카테고리별 기능

1. Branch (브랜치)

브랜치 생성, 전환, 삭제, 원격 동기화 등의 작업을 수행합니다.

지원하는 작업:

  • 브랜치 생성
  • 브랜치 전환
  • 브랜치 생성 및 전환
  • 브랜치 삭제 (안전)
  • 브랜치 강제 삭제
  • 원격에 푸시
  • 원격 설정 및 푸시
  • 원격에서 풀

예시:

# 새 브랜치 생성 및 전환
git checkout -b feature/user-auth

# 원격에 푸시하고 upstream 설정
git push -u origin feature/user-auth

# 브랜치 삭제
git branch -d old-feature

2. Commit (커밋)

변경사항을 커밋하고 다양한 옵션을 적용합니다.

지원하는 옵션:

  • -a: 모든 변경사항 스테이징
  • --amend: 마지막 커밋 수정
  • --no-verify: 훅 스킵

예시:

# 기본 커밋
git commit -m "feat: add user authentication"

# 모든 변경사항 스테이징 및 커밋
git commit -a -m "fix: resolve login bug"

# 마지막 커밋 수정
git commit --amend -m "feat: add user authentication and validation"

3. Stash (임시 저장)

작업 중인 변경사항을 임시로 저장하고 관리합니다.

지원하는 작업:

  • 변경사항 저장
  • 최근 stash 적용 및 삭제
  • 최근 stash 적용
  • 모든 stash 목록
  • 최근 stash 삭제
  • 모든 stash 삭제

예시:

# 변경사항을 stash에 저장
git stash save "WIP: working on feature"

# stash 적용 및 삭제
git stash pop

# stash 목록 확인
git stash list

4. Reset (리셋)

커밋을 되돌리고 작업 디렉토리 상태를 변경합니다.

리셋 모드:

  • --soft: 변경사항을 스테이징된 상태로 유지
  • --mixed: 변경사항을 unstaged 상태로 유지 (기본값)
  • --hard: 모든 변경사항 삭제 (주의!)

예시:

# 마지막 커밋을 취소하고 변경사항 유지
git reset --soft HEAD~1

# 마지막 2개 커밋 취소, unstaged 상태로 유지
git reset --mixed HEAD~2

# 특정 커밋으로 되돌리고 모든 변경사항 삭제
git reset --hard a1b2c3d

5. Rebase (리베이스)

커밋 히스토리를 재작성하고 정리합니다.

기능:

  • 기본 rebase
  • Interactive rebase (-i)

예시:

# main 브랜치 기준으로 rebase
git rebase main

# Interactive rebase로 커밋 정리
git rebase -i HEAD~5

Interactive rebase에서 할 수 있는 작업:

  • pick: 커밋 유지
  • reword: 커밋 메시지 수정
  • edit: 커밋 수정
  • squash: 이전 커밋과 합치기
  • fixup: 이전 커밋과 합치기 (메시지 제거)
  • drop: 커밋 삭제

6. Cherry-pick (체리픽)

다른 브랜치의 특정 커밋을 현재 브랜치에 적용합니다.

예시:

# 특정 커밋을 현재 브랜치에 적용
git cherry-pick a1b2c3d

# 여러 커밋 적용
git cherry-pick a1b2c3d e4f5g6h

사용 시나리오

시나리오 1: 새 기능 개발

# 1. 새 브랜치 생성 및 전환
git checkout -b feature/payment

# 2. 작업 후 커밋
git commit -a -m "feat: add payment gateway"

# 3. 원격에 푸시
git push -u origin feature/payment

시나리오 2: 긴급 수정

# 1. 현재 작업 임시 저장
git stash save "WIP: payment feature"

# 2. hotfix 브랜치로 전환
git checkout hotfix/critical-bug

# 3. 수정 후 원래 브랜치로 돌아가기
git checkout feature/payment

# 4. 작업 복구
git stash pop

시나리오 3: 커밋 정리

# 1. Interactive rebase로 최근 5개 커밋 정리
git rebase -i HEAD~5

# 2. 불필요한 커밋은 squash, 메시지는 reword
# (에디터에서 작업)

# 3. 강제 푸시 (주의!)
git push --force-with-lease

시나리오 4: 잘못된 커밋 수정

# 1. 마지막 커밋 메시지만 수정
git commit --amend -m "fix: correct commit message"

# 2. 마지막 커밋에 파일 추가
git add forgotten-file.js
git commit --amend --no-edit

안전 수칙

⚠️ 주의해야 할 명령어

  1. git reset --hard: 모든 변경사항이 영구적으로 삭제됩니다
  2. git push --force: 원격 히스토리를 강제로 덮어씁니다
  3. git branch -D: 머지되지 않은 브랜치도 강제 삭제합니다
  4. git stash clear: 모든 stash가 영구적으로 삭제됩니다

✅ 권장사항

  1. 커밋 전 확인: git status, git diff로 변경사항 확인
  2. 브랜치 확인: git branch로 현재 브랜치 확인
  3. 원격 동기화: 작업 전 git pull로 최신 상태 유지
  4. 백업: 위험한 작업 전 브랜치 백업 생성

Git 워크플로우 추천

Feature Branch 워크플로우

# 1. 최신 main 브랜치로 업데이트
git checkout main
git pull origin main

# 2. 새 기능 브랜치 생성
git checkout -b feature/new-feature

# 3. 작업 및 커밋
git commit -a -m "feat: implement new feature"

# 4. main 브랜치 변경사항 반영
git checkout main
git pull origin main
git checkout feature/new-feature
git rebase main

# 5. 원격에 푸시
git push -u origin feature/new-feature

Gitflow 워크플로우

# develop 브랜치에서 작업
git checkout develop
git checkout -b feature/user-profile

# 작업 완료 후
git checkout develop
git merge feature/user-profile

# 릴리즈 준비
git checkout -b release/1.0.0

# 프로덕션 배포
git checkout main
git merge release/1.0.0
git tag -a v1.0.0

팁과 트릭

1. 커밋 메시지 컨벤션

feat: 새로운 기능 추가
fix: 버그 수정
docs: 문서 수정
style: 코드 포맷팅
refactor: 리팩토링
test: 테스트 추가
chore: 빌드 설정 등

2. 유용한 별칭 (alias)

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

3. 커밋 취소 vs 되돌리기

# 커밋 취소 (히스토리 수정)
git reset HEAD~1

# 커밋 되돌리기 (새 커밋 생성)
git revert HEAD

관련 도구

추가 학습 자료