Day 085独立开发 Building Solo约 6 分钟

非技术 Builder,到底需要懂多少 Git / 开发知识?

How much Git does a non-technical builder need?

和 Coding Agents 一起做产品以后,我经常会碰到一些以前不会主动学习的词:

branch、main、worktree、origin/main、rebase、commit SHA、diverged……

如果每碰到一个词都停下来系统学习,很快就会发现:产品没做多少,开发基础课倒是越补越多。

但完全不懂也不行。

Agent 说“这个 branch 已经落后 main”“本地和远端发生分叉”“这个任务基于旧的 commit”,如果我完全不知道它在说什么,就很难判断现在能不能继续做。

所以对我来说,更实际的问题不是“我要不要学 Git”。

而是:

作为一个非技术背景的 Builder,我到底要懂到什么程度?

目前我给自己的边界是六件事。

1. 当前的「共同基准」是什么

一个项目同时可能存在很多“版本”:Claude Design 刚产出的设计、Coding Agent 正在修改的 branch、本地还没 commit 的文件,以及已经 merge 进入 main 的代码。

它们可能都很新,但状态不同。

对我来说最重要的是知道:哪一版是其他 Agent 默认应该继续工作的共同基准。

通常是已经 merge 的 main。其他内容可以比 main 更新,但在 merge 之前,它们仍然是 proposal、work in progress 或 candidate。

这并不意味着 main 里的所有东西永远正确。发生产品或设计冲突时,还需要继续看对应的 Product Definition、Design Rules 或其他 canonical source。

所以我需要理解的不是 Git 的每个细节,而是两件事:现在大家基于哪一版工作,以及发生冲突时谁有决定权。

所以当 Agent 说:

已经改好了。

我会多问一层:

是在 branch 里改好了,还是已经 merge 了?

这两件事差很多。

2. 单个任务是基于哪一版开始的

Coding Agent 说:

目前代码里是这样的。

这里的“目前”其实有时间范围。

一个任务如果已经做了几天,中间又有很多其他修改 merge 进入 main,它的判断可能仍然建立在几天前的代码上。

这就是 BASE 这个概念对我有用的地方。

我不需要自己记住一长串 commit SHA,只需要理解:

这个任务从项目的哪个版本开始?

如果 main 已经发生了相关变化,就需要让 Agent 重新检查原来的判断是否还成立。

具体怎么查 commit、怎么同步,由 Agent 完成。

我要知道的是:Agent 的上下文也会过期。

3. 分清是哪一种「已完成」

这个区别对非工程背景的人很容易混在一起。

一个任务可能已经:

设计完成;实现完成;测试通过;commit;push;甚至已经创建 PR。

它依然可能没有进入 main。

所以现在看到 Coding Agent 写:

implementedcommittedpushedmerged

我不会再把它们理解成同一件事。

implemented 只能说明某个工作区里已经做了。

merged 才意味着它进入了项目共同的主线。

这也让我更容易理解为什么几个 Agent 有时候会看到不同的产品状态。

4. 理解 branch 的作用,但不必自己精通 branch 操作

我现在对 branch 最需要的理解很简单:

main 是共同基线,branch 是一条暂时独立的工作线。

不同任务可以在不同 branch 上推进,互相不影响。

最后经过 review,再决定是否进入 main。

至于:

怎么建 branch;怎么建 worktree;什么时候 rebase;发生分叉怎么恢复;

这些我可以让 Coding Agent处理。

我需要能看懂的是:

这个修改现在在哪条工作线上?它有没有进入共同版本?

这已经足够解决大量沟通问题。

5. 能看懂 dependency,而不是自己解决所有冲突

有些开发问题看起来像 Git 问题,其实更重要的是依赖关系。

例如:

任务 A 正在修改一个全局组件。

任务 B 同时大量使用这个组件。

Git 最后可能完全没有报 conflict,但 B 原本基于旧组件做出的判断已经失效。

所以我需要知道:

这个任务依赖什么?

但我不需要自己决定用 merge 还是 rebase 去同步。

这也是我现在理解 technical literacy 的一个边界:

我要看懂关系,不一定要亲自执行操作。

6. 知道什么时候不能继续把决定交给 Agent

有一类问题,我会放心让 Coding Agent 自己处理:

这个 branch 落后 main,检查以后安全同步。

建一个新的 worktree。

Git history 有分叉,先保护现有修改,再给出恢复方案。

两个文件出现机械性的 merge conflict,按当前代码语义合并。

这些主要是技术执行。

另一类问题,我一定会介入:

新设计要求 Button 36px,但当前 Design Rules 写的是 34px,应该改哪边?

实际代码行为和 Product Definition 不一致,哪个才是 intended behavior?

两个任务对同一个组件提出了不同要求,产品最后应该选择哪一个?

这里缺的不是 Git 技巧。

缺的是一个决定。

如果我把这类判断也交给 Agent 自己“顺手解决”,最后很容易得到一个技术上完全成立、产品上却没有人真正决定过的结果。

所以,我并不需要把 Git 全部学会

我现在需要的,不是能够脱离 Coding Agent 独立完成所有工程操作。

我需要的是看懂几件关键事情:

  • 当前什么算数;
  • Agent 基于哪一版工作;
  • 哪些修改还没有进入主线;
  • 一条 branch 大概意味着什么;
  • 任务之间有没有依赖;
  • 问题什么时候已经从技术执行变成了产品决定。

至于 Git 命令、rebase、worktree、branch 清理、冲突恢复,我会随着使用慢慢知道一些,但没有必要把“自己熟练操作”当成目标。

对非技术背景的 Builder 来说,我觉得一个更实际的标准是:

看得懂,能判断,敢授权,也知道什么时候应该把决定收回来。

操作可以继续交给 Coding Agent。

版本、依赖和最终判断,至少要留在自己手里。