- name
- git-teacher-setup
- description
- Initial Git/GitHub setup and project folder creation for non-developers โ handles install, GitHub connection, and first project scaffold. Auto-skips completed steps. Korean triggers โ "๊น ์์", "๊น ์ค์ ", "์ฒ์์ด์์", "git ์ค์น", "GitHub ์ฐ๊ฒฐ", "ํ๋ก์ ํธ ๋ง๋ค๊ธฐ", "๊น ์ธํ
", "์์ํ๊ธฐ". English triggers โ "start with git", "git setup", "connect GitHub", "new project".
# ์์ํ๊ธฐ โ Phase 1 + 2 (๋ฐ๋ฅด๋ค ๊น์ ์ โ Codex)
Git/GitHub ์ด๊ธฐ ์ค์ (Phase 1)๊ณผ ํ๋ก์ ํธ ํด๋ ๋ง๋ค๊ธฐ(Phase 2)๋ฅผ ํ๋ฒ์ ์ฒ๋ฆฌํ๋ค.
์ด๋ฏธ ์๋ฃ๋ ๋จ๊ณ๋ ์๋์ผ๋ก ์คํตํ๋ค.
> ์ค๋ช
ยท๊ต์ก ์ `git-teacher-help`์ ยง๊ต์ก ์์น(`shared/questioning-policy.md` ยง3 Teaching)์ ๋ฐ๋ฅธ๋ค. ๊ฒ๋จน์ ์ด๋ณด์๊ฒ๋ ์์ท ๊ธ์ง โ ๋น์ ๋ก ์์ฌ์ํค๋ฉฐ ์ฌ๋ฌ ํด์ ๊ฑธ์ณ ์์ก๊ณ ๊ฐ๋ค(ยง2a). ๋ค๋ง ์ฌ์ฉ์๊ฐ ๊ทธ๋ฅ ๋นจ๋ฆฌ ์ธํ
๋ง ์ํ๋ฉด ๊ฐ์ํ์ง ๋ง๊ณ ๋จ๊ณ๋ง ์งํํ๋ค(ยง2c).
> Codex CLI์๋ ๊ฐ๊ด์ ์นด๋ UI๊ฐ ์๋ค. ๊ฒฐ์ ์ด ํ์ํ ๊ณณ์ `shared/questioning-policy.md` ยงA์ **์ฑํ
๋ฒํธํ ์ ํ์ง ๋ธ๋ก**์ผ๋ก ๋ฌป๊ณ , ์ฌ์ฉ์์ ๋ค์ ์์ ํ
์คํธ ๋ต๋ณ์ ์ฝ๋๋ค.
## Phase 1: ์ค๋นํ๊ธฐ
"Google Drive ์ฑ์ ์ค์นํ๊ณ ๊ตฌ๊ธ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ๋ ๊ฒ๊ณผ ๊ฐ์์."
### Step 1: ๋ณ๋ ฌ ์ํ ์์ง
๋ค์ ๋ช
๋ น์ **๋ณ๋ ฌ๋ก(๊ฐ๋ฅํ ํ ํจ๊ป)** ์คํํ๋ค:
```bash
git --version 2>/dev/null # git ์ค์น ํ์ธ
gh --version 2>/dev/null # gh ์ค์น ํ์ธ
git config --global user.name # ์ด๋ฆ ์ค์ ํ์ธ
git config --global user.email # ์ด๋ฉ์ผ ์ค์ ํ์ธ
gh auth status 2>&1 # GitHub ๋ก๊ทธ์ธ ํ์ธ
```
### Step 2: ์๋ฃ๋ ๋จ๊ณ ์คํต + ๋ฏธ์๋ฃ ๋จ๊ณ ์งํ
์์ง ๊ฒฐ๊ณผ๋ฅผ ๋ถ์ํ์ฌ ์ด๋ฏธ ์๋ฃ๋ ํญ๋ชฉ์ ์ฒดํฌ ํ์๋ก ๋ณด์ฌ์ฃผ๊ณ , **๋ฏธ์๋ฃ ํญ๋ชฉ๋ง** ์งํํ๋ค.
#### 2a. Git ์ค์น (๋ฏธ์ค์น ์)
```
Git์ด ์ค์น๋์ด ์์ง ์์์. ์ค์นํ ๊ฒ์.
๋๋ผ์ด๋ธ๋ฅผ ์ฐ๋ ค๋ฉด ๋๋ผ์ด๋ธ ์ฑ์ด ํ์ํ ๊ฒ์ฒ๋ผ, Git๋ ์ฑ์ด ํ์ํด์.
```
macOS:
```bash
xcode-select --install
```
Windows: https://git-scm.com/download/win ์์ ์ค์น ํ์ผ์ ๋ค์ด๋ก๋ํ๋ค.
Linux:
```bash
sudo apt-get install git
```
์ค์น ํ ํ์ธ: `git --version`
#### 2b. GitHub CLI (gh) ์ค์น (๋ฏธ์ค์น ์)
```
GitHub CLI๋ฅผ ์ค์นํ ๊ฒ์. GitHub์ ํ์ผ์ ์ฌ๋ฆฌ๋ ๋ฐ ํ์ํ ๋๊ตฌ์์.
```
macOS (Homebrew ์์ ๋):
```bash
brew install gh
```
Homebrew ์์ ๋: Homebrew ์ค์น๋ฅผ ๋จผ์ ์๋ดํ๋ค.
Windows:
```bash
winget install --id GitHub.cli
```
Linux:
```bash
(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
&& out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \
&& cat $out | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -y
```
๋๋ ๋ฐฐํฌํ ์ ์ฅ์์์ ๋ฐ๋ก ์ค์น ๊ฐ๋ฅํ ๊ฒฝ์ฐ: `sudo apt install gh`
์ค์น ํ ํ์ธ: `gh --version`
#### 2c. Git ์ฌ์ฉ์ ์ ๋ณด ์ค์ (๋ฏธ์ค์ ์)
๋จผ์ ๋น์ ๋ก ์์ฌ์ํจ๋ค:
```
Git์ ์ด๋ฆ๊ณผ ์ด๋ฉ์ผ์ ๋ฑ๋กํด์ผ ํด์.
๊ตฌ๊ธ ๊ณ์ ์ ๋ง๋ค ๋ ์ด๋ฆ์ ์
๋ ฅํ๋ ๊ฒ๊ณผ ๊ฐ์์.
ํ์ผ์ ์ ์ฅํ ๋ "๋๊ฐ ์์ ํ๋์ง" ๊ธฐ๋กํ๋ ๋ฐ ์ฐ์ฌ์.
```
๊ทธ๋ค์ ์ฑํ
์ ๋ฒํธํ ์ ํ์ง๋ก ๋ฌป๋๋ค (`shared/questioning-policy.md` ยงA):
```text
์ง๋ฌธ: Git์ ๋ฑ๋กํ ์ด๋ฆ๊ณผ ์ด๋ฉ์ผ์ ์ด๋ป๊ฒ ํ ๊น์?
1. ์ง์ ์
๋ ฅ โ ์ด๋ฆ/์ด๋ฉ์ผ์ ํ ์ค๋ก ์๋ ค์ฃผ์ธ์ (์: ํ๊ธธ๋ / hong@email.com)
2. GitHub ๊ณ์ ๊ณผ ๋์ผ โ GitHub ๋ก๊ทธ์ธ ํ ์๋์ผ๋ก ๊ฐ์ ธ์ฌ๊ฒ์
3. ๋ฌธ์ฅ์ผ๋ก ์ง์ ์์ ์์ฒญ
(๋ชจ๋ฅด๋ฉด 1๋ฒ์ผ๋ก ์งํํ๊ฒ ์ต๋๋ค.)
```
์
๋ ฅ์ ๋ฐ์ผ๋ฉด:
```bash
git config --global user.name "์ฌ์ฉ์ ์ด๋ฆ"
git config --global user.email "์ฌ์ฉ์ ์ด๋ฉ์ผ"
```
#### 2d. GitHub ๋ก๊ทธ์ธ (๋ฏธ๋ก๊ทธ์ธ ์)
```
GitHub์ ๋ก๊ทธ์ธํ ๊ฒ์. ๊ตฌ๊ธ ๊ณ์ ์ผ๋ก ๋๋ผ์ด๋ธ์ ๋ก๊ทธ์ธํ๋ ๊ฒ๊ณผ ๊ฐ์์.
๋ธ๋ผ์ฐ์ ์ฐฝ์ด ์ด๋ฆฌ๋ฉด ๋ก๊ทธ์ธํ๊ณ ์น์ธํด์ฃผ์ธ์.
```
```bash
gh auth login --web --git-protocol https
```
> ๋ธ๋ผ์ฐ์ ์ธ์ฆ์ ์ฌ์ฉ์๊ฐ ์ง์ ์๋ฃํด์ผ ํ๋ค. ๋ช
๋ น์ ๋์ด(๋๋ ์๋ดํ) ๋ค **์ธ์ฆ์ด ๋๋ฌ๋์ง ํ์ธํ๊ณ ๋ฉ์ถ๋ค.** ์ธ์ฆ์ด ๋๋ ๊ฒ์ฒ๋ผ ๋จ์ ํ์ง ์๋๋ค.
### Step 3: Phase 1 ์๋ฃ ํ์ธ
```
์ค๋น ์๋ฃ!
- Git ์ค์น๋จ (v2.xx)
- GitHub ๋ก๊ทธ์ธ๋จ (๊ณ์ : username)
์ด์ ํ๋ก์ ํธ ํด๋๋ฅผ ๋ง๋ค ์ ์์ด์.
```
## Phase 2: ํด๋ ๋ง๋ค๊ธฐ
"Google Drive์ ์ ๊ณต์ ํด๋๋ฅผ ๋ง๋๋ ๊ฒ๊ณผ ๊ฐ์์."
### Step 4: ํ๋ก์ ํธ ์ ํ
์ฑํ
์ ๋ฒํธํ ์ ํ์ง๋ก ๋ฌป๋๋ค (`shared/questioning-policy.md` ยงA):
```text
์ง๋ฌธ: ํ๋ก์ ํธ ํด๋๋ฅผ ์ด๋ป๊ฒ ๋ง๋ค๊น์?
1. ์ ํ๋ก์ ํธ ์์ํ๊ธฐ โ ๋น ํด๋๋ฅผ ๋ง๋ค์ด์
2. ๊ธฐ์กด ํ๋ก์ ํธ ๊ฐ์ ธ์ค๊ธฐ โ GitHub์ ์๋ ํด๋๋ฅผ ๋ณต์ฌํด์
3. ํ์ฌ ํด๋๋ฅผ ํ๋ก์ ํธ๋ก ๋ง๋ค๊ธฐ โ ์ง๊ธ ์ด ํด๋๋ฅผ Git์ผ๋ก ๊ด๋ฆฌํด์
4. ๋ฌธ์ฅ์ผ๋ก ์ง์ ์์ ์์ฒญ
(๋ชจ๋ฅด๋ฉด 1๋ฒ์ผ๋ก ์งํํ๊ฒ ์ต๋๋ค.)
```
#### ์ ํ 1: ์ ํ๋ก์ ํธ ์์ํ๊ธฐ
์ฑํ
์์ ํ๋ก์ ํธ ์ด๋ฆ์ ๋ฐ๋๋ค. ์ด์ด์ ๊ณต๊ฐ ์ฌ๋ถ๋ฅผ ยงA ๋ฒํธ ๋ธ๋ก์ผ๋ก ํ์ธํ๋ค:
```text
์ง๋ฌธ: ์ด ํ๋ก์ ํธ๋ฅผ ๊ณต๊ฐ๋ก ๋ง๋ค๊น์, ๋น๊ณต๊ฐ๋ก ๋ง๋ค๊น์?
1. ๋น๊ณต๊ฐ(private) โ ๋๋ง ๋ณผ ์ ์์ด์ (์ถ์ฒ)
2. ๊ณต๊ฐ(public) โ ๋๊ตฌ๋ ๋ณผ ์ ์์ด์
3. ๋ฌธ์ฅ์ผ๋ก ์ง์ ์์ ์์ฒญ
```
```bash
mkdir {project-name} && cd {project-name}
git init
gh repo create {project-name} --{public|private} --source=. --remote=origin --push
```
> ์ฌ์ฉ์๊ฐ ๊ณต๊ฐ๋ฅผ **๋ช
ํํ** ๊ณ ๋ฅด์ง ์์์ผ๋ฉด ์ ๋ ๊ณต๊ฐ๋ก ๋ง๋ค์ง ์๋๋ค (๊ธฐ๋ณธ์ ๋น๊ณต๊ฐ).
#### ์ ํ 2: ๊ธฐ์กด ํ๋ก์ ํธ ๊ฐ์ ธ์ค๊ธฐ
์ฑํ
์์ GitHub URL ๋๋ ์ ์ฅ์ ์ด๋ฆ์ ๋ฐ๋๋ค.
์ฌ์ฉ์ ์
๋ ฅ์ ๋ถ์ํ์ฌ ์ ์ ํ ๋ช
๋ น์ ์คํํ๋ค:
- `owner/repo` ํํ: `gh repo clone {owner/repo}`
- `https://github.com/...` ํํ: `git clone {URL}`
- `git@github.com:...` ํํ: `git clone {URL}`
#### ์ ํ 3: ํ์ฌ ํด๋๋ฅผ ํ๋ก์ ํธ๋ก ๋ง๋ค๊ธฐ
๊ณต๊ฐ ์ฌ๋ถ๋ฅผ ยงA ๋ฒํธ ๋ธ๋ก์ผ๋ก ํ์ธํ๋ค (์ ํ 1๊ณผ ๋์ผ, ๊ธฐ๋ณธ์ ๋น๊ณต๊ฐ).
```bash
git init
gh repo create {folder-name} --{public|private} --source=. --remote=origin --push
```
### Step 5: Phase 2 ์๋ฃ ํ์ธ
```
ํด๋ ์ค๋น ์๋ฃ!
- ๋ด ์ปดํจํฐ: /Users/me/my-project
- ํด๋ผ์ฐ๋: https://github.com/username/my-project
์ด ๋ ๊ณณ์ด ์ฐ๊ฒฐ๋์ด ์์ด์. ๋๋ผ์ด๋ธ์ "๋๊ธฐํ ํด๋"์ ๋น์ทํ์ฃ .
๋จ, ์๋ ๋๊ธฐํ๋ ์ ๋ผ์ โ ์ง์ "์ ์ฅ"ํ๊ณ "์ฌ๋ ค์ผ" ํด์.
ํ์ผ์ ์์ ํ ๋ค "์ ์ฅํด์ค"๋ผ๊ณ ํ๋ฉด ๋ฉ๋๋ค.
```
## ์ด๋ฏธ ๋ชจ๋ ๊ฒ ์ค์ ๋ ๊ฒฝ์ฐ
๋ชจ๋ ๊ฒ์ฌ๊ฐ ํต๊ณผ๋๋ฉด:
```
์ด๋ฏธ ๋ค ์ค๋น๋์ด ์์ด์!
- Git ์ค์น๋จ (v2.xx)
- GitHub ๋ก๊ทธ์ธ๋จ (๊ณ์ : username)
- ํ๋ก์ ํธ ์ฐ๊ฒฐ๋จ: https://github.com/username/my-project
๋ฐ๋ก ์์
์ ์์ํ ์ ์์ด์.
"์ํ ํ์ธ"์ผ๋ก ํ์ฌ ์ํ๋ฅผ ๋ณผ ์ ์๊ณ ,
ํ์ผ์ ์์ ํ ๋ค "์ ์ฅํด์ค"๋ก ์ ์ฅํ ์ ์์ด์.
```
## Safety
- ๋ธ๋ผ์ฐ์ ์ธ์ฆ์ ์์๋ก ์๋ฃ๋ ๊ฒ์ผ๋ก ๊ฐ์ ํ์ง ์๋๋ค โ ์ธ์ฆ ๋ช
๋ น์ ๋์ฐ๊ฑฐ๋ ์๋ดํ ๋ค ๋ฉ์ถ๋ค.
- ์ฌ์ฉ์๊ฐ ๊ณต๊ฐ๋ฅผ ๋ช
ํํ ๊ณ ๋ฅด์ง ์์ผ๋ฉด ๊ณต๊ฐ ์ ์ฅ์๋ฅผ ๋ง๋ค์ง ์๋๋ค.
- GitHub ์
๋ก๋๋ ์๋์์ ์ค๋ช
ํ๋ค: ์ ์ฅ(commit) โ ์ฌ๋ฆฌ๊ธฐ(push).
View on GitHub