|
| 1 | +# git-intent |
| 2 | + |
| 3 | + |
| 4 | + |
| 5 | +[English](./README.md) | 한국어 |
| 6 | + |
| 7 | +**git-intent**는 [의도적 커밋(intentional commits)](https://intentionalcommits.org/)을 생성하기 위한 Git 워크플로우 도구입니다. |
| 8 | + |
| 9 | +## git-intent를 사용하는 이유 |
| 10 | + |
| 11 | +많은 개발자들은 코드를 먼저 작성하고 커밋 메시지는 나중에 작성해요. |
| 12 | +이런 방식은 크고 모호하며 초점이 흐려진 커밋으로 이어질 수 있어요. |
| 13 | +**git-intent**는 테스트 주도 개발(TDD) 방식에서 영감을 받아, 코딩을 시작하기 전에 개발 의도를 명확히 정의하도록 도와줘요. |
| 14 | +이로써 커밋 과정이 개발 흐름의 자연스러운 일부가 될 수 있어요. |
| 15 | + |
| 16 | +사전에 의도를 정리하면 다음과 같은 장점이 있어요 |
| 17 | +- 깔끔하고 읽기 쉬운 커밋 히스토리를 만들 수 있어요 |
| 18 | +- 개발 목적을 명확하게 전달할 수 있어요 |
| 19 | +- 작업 범위 확장을 방지하고 원자적인 커밋을 유지할 수 있어요 |
| 20 | +- 협업과 유지보수 효율이 높아져요 |
| 21 | + |
| 22 | + |
| 23 | +> [Intent-Driven Git Workflow](https://youtu.be/yDRs4Pl1Lq0?feature=shared)를 소개해주신 [Joohoon Cha](https://github.com/jcha0713)님께 감사의 마음을 전합니다. |
| 24 | +
|
| 25 | +## 워크플로우 |
| 26 | + |
| 27 | +```mermaid |
| 28 | +flowchart LR |
| 29 | + A[의도 정의] -->|git intent add| B[작업 시작] |
| 30 | + B -->|git intent start| C[작업 중] |
| 31 | + C -->|git intent commit| A |
| 32 | + |
| 33 | + subgraph "선택적 작업" |
| 34 | + D[의도 분할] |
| 35 | + E[의도 취소] |
| 36 | + F[의도 삭제] |
| 37 | + end |
| 38 | + |
| 39 | + C -.->|git intent divide| D |
| 40 | + C -.->|git intent cancel| E |
| 41 | + A -.->|git intent drop| F |
| 42 | +``` |
| 43 | + |
| 44 | +## 빠른 시작 |
| 45 | + |
| 46 | +```bash |
| 47 | +# 1. NPM을 사용하여 설치하세요 |
| 48 | +npm install -g git-intent |
| 49 | + |
| 50 | +# 2. 의도를 추가하세요 |
| 51 | +git intent add "feat: 사용자 로그인 페이지 생성" |
| 52 | + |
| 53 | +# 3. 작업을 시작하세요 |
| 54 | +git intent start |
| 55 | +``` |
| 56 | + |
| 57 | +## 요구 사항 |
| 58 | + |
| 59 | +- Git (>= 2.0) |
| 60 | +- Node.js (>= 18) |
| 61 | + |
| 62 | +## 설치 |
| 63 | + |
| 64 | +### NPM 사용 |
| 65 | + |
| 66 | +```bash |
| 67 | +npm install -g git-intent |
| 68 | +``` |
| 69 | + |
| 70 | +### 업데이트 |
| 71 | + |
| 72 | +```bash |
| 73 | +# NPM |
| 74 | +npm update -g git-intent |
| 75 | + |
| 76 | +# 버전 확인 |
| 77 | +git intent --version |
| 78 | +``` |
| 79 | + |
| 80 | +## 사용법 |
| 81 | + |
| 82 | +### 기본 명령어 |
| 83 | + |
| 84 | +```bash |
| 85 | +# 의도 추가 |
| 86 | +git intent add "feat: 로그인 페이지 구현" |
| 87 | +git intent add # 에디터를 열어 작성할 수도 있어요 |
| 88 | + |
| 89 | +# 목록과 관리 |
| 90 | +git intent list # 모든 의도 확인 |
| 91 | +git intent show # 현재 작업 중인 의도 보기 |
| 92 | +git intent start # 작업 시작 (대화형) |
| 93 | +git intent start <id> # 특정 의도로 작업 시작 |
| 94 | + |
| 95 | +# 완료하거나 수정할 때 |
| 96 | +git intent commit # 현재 의도 커밋 |
| 97 | +git intent commit -m "설명 추가" # 추가 메시지 포함 |
| 98 | +git intent cancel # 현재 의도 취소 |
| 99 | +git intent reset # 모든 의도 초기화 |
| 100 | + |
| 101 | +# 고급 명령어 |
| 102 | +git intent divide # 의도 분할 (대화형) |
| 103 | +git intent divide <id> # 특정 의도 분할 |
| 104 | +git intent drop # 의도 삭제 (대화형) |
| 105 | +git intent drop <id> # 특정 의도 삭제 |
| 106 | +``` |
| 107 | + |
| 108 | +## 자주 묻는 질문 |
| 109 | + |
| 110 | +**Q: 코딩 전에 의도를 정의하는 이유는 무엇인가요?** |
| 111 | +A: 명확하게 정의된 의도는 집중력을 유지하고, 더 의미 있는 커밋을 생성하며, 커밋 히스토리의 협업과 가독성을 향상시키는 데 도움이 돼요. |
| 112 | + |
| 113 | +**Q: 내 의도는 어디에 저장되나요? Git에 공유되거나 커밋되나요?** |
| 114 | +A: 의도는 저장소의 `.git` 디렉토리에 로컬로 저장되며 공유되거나 커밋되지 않아요. 별도로 공유하지 않는 한 개인적으로만 유지돼요. |
| 115 | + |
| 116 | +## 기여하기 |
| 117 | + |
| 118 | +여러분의 기여를 언제나 환영합니다. 자세한 가이드는 다음을 참조하세요. |
| 119 | + |
| 120 | +[CONTRIBUTING.md](./CONTRIBUTING.md) |
| 121 | + |
| 122 | +## 라이선스 |
| 123 | + |
| 124 | +MIT [OffLegacy](https://github.com/offlegacy) — [LICENSE](./LICENSE) |
0 commit comments