实际工作场景中经常会用到的一个技巧,比较两个分支之间差了哪些commit还没有合并??

 

回答一个问题:我当前开发的这个feature/001分支,有哪些commit还没有被合并到master分支?

 

我要看一下,当前开发的这个feature分支,有哪些commit还没有被合并到master分支中去?如果知道了以后,心里就有数了,大概知道自己跟master分支之间差了多少代码。。。。

 

可能你开发一个feature分支,都很多天了,然后中间一度停下来,去做了另外一些事情,比如说其他的feature分支,或者是休假了。回来以后都忘了自己跟master分支之间差了哪些代码了,此时你就可以用这个方法,看一下

 

使用master..feature/001语法,就可以查看哪些commit是feature/001分支可以触达的,但是是master分支无法触达的,此时就可以看到feature/001分支做的那些改动哪些还没有合并到master分支里去

 

当前,我们处于feature/003这个分支,然后我们此时就要看一下说,我都忘了,我在这个分支上开发了多少代码,多少个commit了

 

git log --abbrev-commit master..feature/001

 

 

 

同样可以看一下,feature/001分支比master分支落后了哪些commit,不是需要跟master保持一下同步

 

git show commit标识符

 

还可以看一下,master分支有哪些commit是feature/003分支所没有的,这个是个什么场景啊?这个场景很实用的,就是一般如果你开发一个feature分支时间过长,比如说都开发了几个礼拜了,master分支肯定代码都变化了好多了

 

这个时候你心里有点虚,你就担心说,会不会到时候我往master分支一合并,大量的代码冲突,心里有个底,会先看一下谁提交的,哪些commit在master上有,但是我自己的feature/003分支是么有的

 

git log --abbrev-commit feature/001..master

 

如果说你发现master上有好多的commit,别人提交了,你还没有,此时你应该做一下将master代码反过来merge到你的feature/003分支上去,让你的feature分支的代码跟master分支的代码保持一致,保持同步

 

此外,还可以看一下,哪些本地master分支的commit需要被推送到远程仓库中去,这个的意思就是说,如果你在本地的master上做了不少的提交和修改,可以看一看有哪些代码是还没有推送到远程仓库里去的

 

git log --abbrev-commit origin/master..HEAD

 

这个用法其实常见于不是master分支,就是如果你在本地开发一个feature分支,然后开发了几天,结果不小心忘了推送commit到远程仓库,某一天你想起来了,此时你就可以看一下,你忘了推送多少个commit到远程仓库的feature分支去

 

==================================================================

 

比较少用

 

还可以看一下,在两个feature分支中都有的commit,但是在master分支中还没有

 

git log --abbrev-commit feature/001 feature/002 --not master

 

同时也可以看一下哪些commit是存在于两个分支中的某一个,但是不是两个分支都有的

 

git log --abbrev-commit feature/001...feature/002