1 差集
有时候使用git的时候我们想对比两个branch有哪些不同,比如发code review的时候,如果能有一个命令可以给我们展示两个branch的不同,即差集,那将会很方便。
git有double dot语法可以做这个事情:
git log master..hongchangfirst_branch
它会将所有在hongchangfirst_branch分支里而不在master分支里的所有commit列出来,这样我们就可以很容易的知道两个branch的差异。
如果想查看所有在master分支里而不在hongchangfirst_branch分支里的差异,将两个branch变换顺序即可。
还可以看看远程分支和本地分支的不同:
git log origin/master..head
git还有另外类似的语法可以做相同的事情,比如:
git log master..head
git log ^master head
git log head --not master
这三个命令是一样的。
后两个语法允许我们可以对比多个分支,如:
git log master hongchangfirst_branch ^zhc_branch
上述命令求出所有在master和hongchangfirst_branch有但zhc_branch没有的,即 master和hongchangfirst_branch的并集与zhc_branch的差集。
2 全差(并集与交集的差集)
有时候我们想看两个分支有哪些不同,即左差和右差的并集。我们可以使用triple double语法,如:
git master...head
a
b
如果想列出来哪个commit是哪个分支的,可以使用--left-right参数。
git --left-right master...head
< a
> b
我们就知道里a是在master里,b是在head里。