菜鸟笔记
提升您的技术认知

Git 集合运算

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里。