如何将旧Commit ID与分支最新Commit对比,查看代码留存情况
嘿,这个问题我之前处理项目协议变更时也遇到过,刚好可以给你几个实用的方法来搞定它!
方法一:用 git diff 直接对比旧Commit与最新分支代码
这是最直观的方式,能直接看到你旧提交里的代码和当前最新版本的差异。
基础命令格式:
git diff <你的旧Commit ID> HEAD -- <目标文件名><你的旧Commit ID>:就是你当初提交代码时的那个哈希值(比如a1b2c3d)HEAD:代表当前分支的最新提交<目标文件名>:指定要检查的文件,如果想全局对比整个项目,直接去掉这个参数就行
针对你的示例:
假设你的旧Commit ID是f45678,代码在src/utils.cpp文件里,执行命令:git diff f45678 HEAD -- src/utils.cpp输出里会用红色标记旧Commit中被删除/修改的内容,绿色标记新增的内容。如果你的
updateRefs(b,k);这行没有出现在红色或绿色块里,说明它完全留存到了最新代码中;只有第一行int b = j+k;会显示为红色删除、绿色新增为int b = j+m;。
方法二:用 git blame 追踪单代码行的归属
如果只想确认某一行代码是不是还保留着,git blame 能直接告诉你这行最后是谁修改的。
基础命令格式:
git blame -L <起始行号>,<结束行号> <目标文件名>-L:用来指定要检查的代码行范围,比如你要查第15行的updateRefs,就写-L 15,15
示例操作:
git blame -L 15,15 src/utils.cpp输出会显示这行代码对应的最新Commit ID、作者信息、提交时间。如果显示的是你的旧Commit ID和名字,说明这行代码完全没被修改过;如果是其他作者的Commit,就表示这行已经被改动了。
要是担心你的代码被移到了其他文件,可以加
-C参数追踪代码移动:git blame -C src/utils.cpp
方法三:用 git show 提取旧Commit变更,再手动核对
如果你想先确认自己当初提交了哪些内容,再和最新代码对比,可以用这个方法:
查看旧Commit的具体变更:
git show <你的旧Commit ID> -- <目标文件名>这个命令会输出你当时提交的完整diff,能清晰看到你新增/修改的所有代码行。
打开最新版本的对应文件,直接对比你当初写的代码(比如
updateRefs(b,k);)是否还存在、有没有被修改。
小补充:找不到旧Commit ID怎么办?
如果记不清旧Commit的哈希值,可以用这个命令筛选出你所有的提交:
git log --author="你的名字/邮箱"
从输出里找到你当初提交代码的那条记录,复制对应的Commit ID就行。
内容的提问来源于stack exchange,提问作者Kirby Gaming

