載入中

正在讀取來源… 全部檔案

    概述

    Branchwise 在命令列裡教 git。每一關都從一個畫成提交圖的小倉庫開始,旁邊畫著目標。輸入真正的 git 指令,每執行一條,圖就隨之變化;只要你的倉庫和目標一致,這一關就通過了,不論你是怎麼做到的。

    34 節課從 git init 和暫存區講起,經過分支、合併及其衝突、標籤和復原改動,再到 cherry-pick、互動式變基、rebase --onto、配合 --autosquash 的 fixup 提交、用 --update-refs 處理堆疊的分支、對隊友的 origin 進行 fetch、pull 和 push、force-with-lease、bisect 以及工作樹。指令的回應和 git 一樣,報錯也不例外。

    作者
    wasmga.me
    發布
    2026

    操作詳解

    命令列裡

    按鍵作用
    Type輸入指令;git 指令,以及課程中用到的 cd、edit、make test 和 ls
    Enter執行指令;在空行上按則暫停
    上/下之前輸入的指令
    左/右移動游標
    點選/觸控螢幕點提交會把它的 id 加入指令,點分支或標籤則加入名字

    變基待辦列表裡

    按鍵作用
    上/下選擇一行
    P, S, F, D把它設為 pick、squash、fixup 或 drop
    K/J把這一行上移或下移
    Enter開始變基
    Q/Backspace不做任何改動直接離開

    速查表

    不是 git

    hint
    給這一關的一點點撥
    solution
    一種過關的方法(扣分比提示多)
    undo
    撤回上一條改動了內容的指令
    clear
    清空輸出

    指代提交

    HEAD, @
    你當前所在的位置
    main~2
    沿第一父提交往回數兩個提交
    main^2
    合併提交的第二個父提交
    HEAD@{1}
    HEAD 上一次移動之前所在的位置(reflog)
    @{u}
    當前分支的上游,比如 origin/main
    -
    用於 switch 或 checkout:你之前所在的位置

    得分

    1000
    每關,指令數和最短做法一樣少時
    -100
    每多用一條指令
    -250
    每次提示;solution 算兩次

    技巧

    1. 圖的變化出乎意料時,執行 git status 和 git log --all:它們會把圖上畫的內容列印出來。
    2. 變淡的提交已經沒有任何分支、標籤或 HEAD 能到達。它們仍然存在,reflog 可以找到它們。
    3. 每關只檢查最終結果,所以任何達到目標的路線都算數;路線越短,得分越高。
    4. 很少需要輸入提交的 id:點一下提交,或者用 ~ 從某個分支往回數。