Git Diff提交顺序疑问:如何查看指定提交引入的变更?
如何用
git diff查看特定提交引入的变更? 先来看你的提交历史(最新的提交在最上方):
hash09 Update something5 hashNew Update something4 hashOld Update something3 hash03 Update something2 hash02 Update something hash01 Add something
你想要查看hashNew这个提交里引入的变更,本质上就是要对比hashNew和它的父提交hashOld之间的差异——也就是hashNew相对于hashOld做了哪些修改。下面逐个分析你给出的命令:
git diff hashNew..hashOld:这个命令等价于git diff hashNew hashOld,它展示的是从hashNew回退到hashOld的变更,也就是hashOld相对于hashNew的差异,和你要的方向完全相反,所以不对。git diff hashOld..hashNew:这才是正确的选择!git diff A..B的逻辑是展示从A到B的变更,也就是B相对于A的差异。这里就是对比hashOld(父提交)和hashNew(目标提交),正好能看到hashNew提交里新增的所有修改。git diff hashNew~:hashNew~是hashNew的父提交(也就是hashOld),但单独用git diff <commit>时,Git会默认把这个提交和当前工作区做对比,而不是和hashNew对比,所以这个命令无法直接得到hashNew提交本身的变更。git diff hashNew^:hashNew^和hashNew~在普通非合并提交里是完全等价的,都是指向父提交hashOld,同样的问题——这个命令是拿当前工作区和hashOld对比,不是你要的结果。
另外补充个小技巧:如果想快速查看某个提交本身的变更,还可以用git show hashNew,这个命令会直接展示该提交的详细diff,效果和git diff hashNew^ hashNew是一样的,用起来更方便~
内容的提问来源于stack exchange,提问作者Sato
相关产品推荐
相关产品推荐

