ELI5 · GitHub
issue 可以有爸爸嗎?
可以。而且不只一種關係——「拆解」跟「順序」是兩回事。
👨👧👦
有,叫 sub-issue(子議題)
而且進度是 GitHub 自己算的——你不用手動數還剩幾件。
第一種:父子=「拆解」
一件大事,由這幾件小事組成。小事全做完,大事就完成了。
#5
辦一場婚禮
#6
訂場地
#7
訂菜單
#8
發喜帖
第二種:阻擋=「順序」
同樣這幾張單子,還有另一層關係:
場地沒訂好,喜帖印不出來——因為帖子上要寫地址。
#6
訂場地
───▶擋著
#8
發喜帖
注意:#6 和 #8 都是 #5 的小孩。
同一組單子,兩種關係同時存在,各自記各自的。
不要搞混這兩個
🧩
父子
「這件事由那幾件組成」
回答的是範圍的問題:這件大事包含什麼?做完沒?
父議題上會出現進度條。小孩全關了,你就知道大事可以收了。
🚧
阻擋
「A 做完 B 才能動」
回答的是先後的問題:現在可以開工的有哪些?
被擋住的單子上會標示在等誰,不會出現進度條。
一句話分辨:拆開來看是父子,排隊等的是阻擋。
兩張單子可以同時有這兩種關係,也可以只有其中一種。
最硬的一條規則
一張 issue 只能有一個爸。這是一棵樹,不是一張網。
✓ 可以:一個爸
#5
辦婚禮
↓
#8
發喜帖
✗ 不行:兩個爸
#5
辦婚禮
↓
#9
年度計畫
↓
#8
發喜帖
所以「這張單子同時屬於兩個大功能」是做不到的。
真的需要這樣分類的時候,改用標籤或 Projects 看板——那兩個本來就允許一張單子掛好幾個。
如果你在網路上看到別的寫法
這功能是這一兩年才有的。舊文章教的是土炮版,看起來很像但不是同一件事。
舊做法:在內文打勾選清單
- [x] #6
- [x] #7
- [ ] #8
- [x] #7
- [ ] #8
這只是一段文字。GitHub 會把它變成連結,但它不知道這是「小孩」。 沒有進度條,父子關係也查不到——你想用程式撈「#5 底下還有哪些沒做」,撈不到。
現在:真的 sub-issue
parent: #5
subIssues: 3
completed: 2
subIssues: 3
completed: 2
這是存在資料裡的關係。人家實際去主人的練習 repo 查過,每張 issue 都帶著 「我爸是誰、我有幾個小孩、完成幾個」這幾個欄位,就算你一個都沒建,欄位也在。
指令長這樣
這些旗標人家實際查過 gh,都存在:
gh issue create --title "發喜帖" --parent 5 # 出生就掛在 #5 底下
gh issue create --title "發喜帖" --blocked-by 6 # 要等 #6 做完
gh issue edit 8 --parent 5 # 事後認爹
gh issue edit 5 --add-sub-issue 8 # 從爸爸那邊加小孩,同一件事
gh issue edit 8 --remove-parent # 脫離
兩個方向都通。
你可以從小孩說「我爸是 #5」,也可以從爸爸說「#8 是我小孩」,
結果完全一樣——看你當下手上開著哪一張單子比較順手。
三個上限
1
一個小孩只能有一個爸
上面說過的那條。人家很確定。
100
一個爸最多掛 100 個小孩 沒實際撞過
GitHub 文件上的數字。真的要掛到 100 個,通常代表那張大單子該再拆一層了。
8
最多疊 8 層深 沒實際撞過
爺爺、爸爸、兒子……這樣往下疊。實務上疊到三層就很難看懂了。
還有一件人家沒驗過的事:關掉爸爸應該不會自動關掉小孩。
主人動手試的時候如果發現不是這樣,跟人家說,人家改。