Python 现代开发学习笔记

(六)用分支安排独立修改

1. 从当前提交开始一项功能

现在主分支已经保存了 README 修正。准备增加“总阅读时长”,先建立功能分支:

# 从当前 main 指向的提交开始新分支,并切换过去。
git switch -c feat/summary
git branch --show-current
git status

在 reading.py 中加入下面的函数,放在入口判断之前:

# 修改片段:加入 reading.py,与 count_met 并列;计算不改变传入列表。
def total_minutes(minutes: list[int]) -> int:
    return sum(minutes)

在 check_reading.py 的导入区增加导入,把新检查放在最后的成功输出之前:

# 修改片段:加入 check_reading.py,保留前面已有的三个达标检查。
from reading import total_minutes

assert total_minutes([20, 35, 45]) == 100
# 一次功能提交同时保存实现和对应检查。
python check_reading.py
git add -- reading.py check_reading.py
git commit -m "增加总阅读时长统计和检查"
git switch main

把功能提交记为 C。切回 main 后,reading.py 回到 main 对应的版本,其中还没有 total_minutes。Git 更新的是工作目录中的同一组路径,编辑器看到的文件也会随之变化。

分支是指向提交的引用,不是复制一套目录。HEAD 通常指向当前分支;在功能分支提交时,feat/summary 前进到 C,main 仍停在 B。只切换分支不会把 C 合入 main。

分支从同一个提交出发,功能提交后只移动当前分支的指向

2. 切换前先看尚未提交的内容

尚未提交的编辑属于当前工作目录,不会因为点击另一个分支名就自动保存成该分支的历史。Git 能带过去的修改可能随切换保留;将被覆盖的修改则会让切换停止。先看 git status,完成当前提交,或者使用后面介绍的 stash 临时保存,再切换。

# -v 显示提交概况,-a 同时列出本地与远程跟踪分支。
git branch -v
git branch -a

笔记正文与全部题解 · Ctrl / ⌘ K