ELI5 · GitHub
milestone 是什麼?
一班有起飛時間的飛機。單子想搭,就得在起飛前做完。
✈️
它是唯一「有期限」的分類方式
標籤說這是什麼、父子說由什麼組成,都跟時間無關。
只有 milestone 回答「什麼時候之前要交」。
它長這樣
v1.0
起飛時間3 月 15 日
第一個能給別人用的版本
8 張做完 · 還剩 4 張
67% 這條 GitHub 自己算
它有自己的網址、自己的開關狀態、自己的統計。
不是寫在單子裡的一串字,是一個真的存在的東西,單子只是指向它。
把單子放進去 = 讓它登機
#21
登入頁
#22
接 API
#23
寫測試
#24
改文件
↓
v1.0 3/15 起飛
每關掉一張,進度條自己往前走。
你不用手動數還剩幾張。
一張單子只能搭一班
這是它跟標籤最大的差別。
在資料裡,標籤是一個清單,milestone 是一個格子——格子只裝得下一個。
✓ 可以
#23
寫測試
↓
v1.0
✗ 不行
#23
寫測試
↓↓
v1.0
v1.1
沒趕上飛機怎麼辦?
這是實務上最常發生的事,而且完全正常。
做法叫「改簽」:把沒做完的單子搬到下一班。
v1.0
3/15 已起飛 · 關閉
#21
登入頁
#22
接 API
v1.1
4/30 起飛 · 進行中
#23
寫測試(改簽)
#24
改文件(改簽)
關閉 milestone 不會關掉裡面的單子。
它只是把這個箱子收起來、不再出現在選單裡。
沒做完的單子還是開著的,你要自己決定把它們搬去哪一班。
放回四種分類方式裡看
🏷️
label
這是什麼性質的事?
🧩
sub-issue
這件大事由哪幾件小事組成?
✈️
milestone
什麼時候之前要交?
📋
Projects
現在做到哪個階段了?
四個裡面只有 milestone 綁時間。
如果你發現自己想用標籤表達「這個要在三月前做完」,那就是該用 milestone 的訊號。
一個會讓你找不到指令的雷
✗ gh 沒有 milestone 這個指令
人家實際試過,打 gh milestone 會回
unknown command "milestone" for "gh"。
指令清單裡有 issue、pr、project,就是沒有 milestone。
所以建立一個 milestone 只能去網頁點,或直接打 API。
但把單子放進去有方便指令可用——下面那些都行。
指令
建立要用 API,指派可以用方便指令:
gh api repos/{owner}/{repo}/milestones -f title="v1.0" -f due_on="2026-03-15T00:00:00Z"
gh api repos/{owner}/{repo}/milestones # 看目前有哪些
gh issue create --title "寫測試" --milestone "v1.0"
gh issue edit 23 --milestone "v1.1" # 改簽到下一班
gh issue edit 23 --remove-milestone # 拿下來
gh issue list --milestone "v1.0" # 這班飛機上有誰
指令裡的
{owner}/{repo} 不用自己填,
在 repo 目錄底下 gh 會自動換成你的。