Python 现代开发学习笔记

(四)查看差异、历史与一次提交的范围

1. 从文件内容回到修改记录

# 查看最近提交、分支指向与父子关系。
git log --oneline --graph --decorate -8
# HEAD 表示当前检出的提交;HEAD~1 沿第一个父提交向前一步。
git show --stat HEAD
git show HEAD -- README.md
git diff HEAD~1 HEAD -- README.md
# 查看这份文件最近由哪些提交修改过,并检查具体行的来源。
git log --oneline -- README.md
git blame -- README.md

--oneline 让每个提交占一行,--graph 用图线显示关系,--decorate 附上分支与标签名。show 同时呈现某次提交的信息和修改,--stat 先列出文件变化概况。blame 把当前行关联到最近修改它的提交,用来找到讨论和上下文;确认程序行为仍要阅读源码与测试。

提交表示项目的一份快照,差异是两个快照之间的比较结果。分支名、HEAD 与哈希都可以帮助 Git 选定要比较的位置;之后的分支图继续使用同样的父子关系。

2. 把一项修正和另一项说明分开保存

一次编辑可能既修正目标数字,又改了 README 末尾的运行说明。运行 git add -p -- README.md 可以逐块决定是否暂存:y 接收当前块,n 留在工作目录,s 尝试把当前块继续拆小,q 结束选择。选完后用 git diff --cached 核对,提交只保存选中的内容。交互式暂存

两个修改落在同一个很小的差异块时,可以先调整编辑内容、提交其中一项,再处理另一项;后面的 VS Code 部分也会演示按选中行暂存。不用为了凑提交数量强行拆开一个需要同时成立的实现与测试。

两个差异块只暂存第一个,提交后第二个仍留在工作目录

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