最近在看 看到commit range的相关章节 对于commit range的理解加深了很多 而且要理解commit range也很简单了 C10..C 这个commit range 可能涉及到了多个分支 要确定这个commit range包含了哪些commit 其实这个问题很好回答 把整个commit的历史看成是一个有向图 最近的commit指向之前的commit C~10..C所包括的commit 就是那些从C向前回溯可以到达的commit 删去那些可以从C~10回溯可以到达的commit 看下面这个图 C'11..C这个commit range包括了C C9 C10 C11 C12
C13 - C12 - C11 - C10 - C9 - C
\ /
\ /
C'12 - C'11
在git log 和git diff中使用这个commit range有些事情需要注意,diff是对两个tree做对比 不关心两个tree是如何变得不一样的 而是直接对他们进行对比
考虑如下这个场景:
1, 从master创建一个新的分支 假设为bug/pr1 修改这个分支中的一个文件
2, 在master分支中修改一个文件
这个时候分支的状况如下:
! [bug/pr1] fix bug/pr1
* [master] fix bug pr3
--
* [master] fix bug pr3
+ [bug/pr1] fix bug/pr1
+* [master^] init commit
查看git log -p master..bug/pr1
从图上可以看到 commit range在log中的情况 包含了从bug/pr1可以到达的commit 但是在master中的修改并没有包含在这个range中
git diff master..bug/pr1
可以看到 diff 列出这两个tree之间的不同
阅读(1845) | 评论(1) | 转发(0) |