Python 现代开发学习笔记

(十)临时收起修改与同时查看两个版本

1. stash 保存尚未完成的工作

正在调整 README,临时需要回 main 检查另一件事,可以先把未完成修改收起来:

# 建立文档分支,在编辑器修改 README,并新建 notes.md 保存未完成的提纲。
git switch -c docs/draft
# -u 同时保存尚未跟踪的新文件;被忽略的文件不包含在这次 stash 中。
git stash push -u -m "暂存阅读说明的编辑"
git stash list
git switch main
# 完成查看后,切回原来的工作分支,再恢复最近保存的一份修改。
git switch docs/draft
git stash apply "stash@{0}"
git status
git stash show -p "stash@{0}"

apply 恢复修改但保留 stash 记录,确认工作目录中的内容完整后再执行 git stash drop "stash@{0}"。希望把原来的暂存状态也恢复时使用 apply --index。pop 会在成功恢复后移除该条记录;遇到恢复冲突时,先检查工作目录与 stash 列表,不把它当作已经完成的提交。stash

未完成编辑进入stash,工作目录恢复后切换分支,再应用并确认内容

2. worktree 打开另一个检出目录

想把稳定版与功能版并排运行,可以为另一个分支建立工作树:

# 在 reading-git 中执行,创建新分支和兄弟目录,main 的当前文件不被切换。
git worktree add -b docs/parallel ../reading-docs main
git worktree list

两个目录共享同一仓库的对象与引用,各有自己的工作目录和索引。可以分别用 VS Code 打开,避免反复切换文件。每个目录里的 .venv、数据和日志依然各自准备。完成并提交 reading-docs 中的修改后,在原目录执行 git worktree remove ../reading-docs,移除这份已干净的工作树;分支名仍然存在。worktree

两个工作树共享提交历史,各自检出分支和保存工作目录

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