Chinaunix首页 | 论坛 | 博客
  • 博客访问: 307741
  • 博文数量: 35
  • 博客积分: 825
  • 博客等级:
  • 技术积分: 913
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-11 09:44
文章分类

全部博文(35)

文章存档

2013年(10)

2012年(24)

2010年(1)

我的朋友

分类: LINUX

2012-12-09 13:05:55

最近在看  看到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之间的不同
阅读(1815) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

pengphy2012-12-09 14:33:26

更准确地讲 diff没有commit range之说