加载中

正在读取来源… 全部文件

    概述

    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:点一下提交,或者用 ~ 从某个分支往回数。