如何在git中找到最后一次合并?

Han*_*ans 17 git

对于一个网站,我有主人和舞台,我已经进行了大约10天的舞台演出.我如何确定自上次合并以来或者合并时发生的变化?我所做的大多数合并最终都是FF,因此我无法记录它们git merge branch -m 'merging staging'(git报​​告它忽略了-m).我通常将master合并到staging中进行测试,然后将staging合并到master中以进行更多测试和部署.

我可以标记每一个,但我担心这样做对于合并的混乱.我想知道的是"粗略地说,自从我上一次合并到主人之后发生了什么变化?" 然后我可以确保我花了额外的时间在期末考试中调查这些变化.有时同事会做出我直到这个阶段才注意到的变化.

我想,因为staging-> into-> master merges很少见,我可以标记它们然后做一个"git whatchanged tag"但是我希望有一个非标记的方法来做它.谢谢.

ale*_*lex 16

试试这个,它将选择提交消息以"Merge"开头的最后一个分支:

git show :/^Merge
Run Code Online (Sandbox Code Playgroud)

是一个包含一些git技巧的网站,可能对你有所帮助.

  • 我觉得你真正想做的是`git log --merges -n 1`.实际上并不能保证合并提交具有此表单的提交消息,即使它是默认值. (23认同)

Raz*_*ssa 16

git log --merges -n 1
Run Code Online (Sandbox Code Playgroud)

效果很好.来自man git-log:

   --merges
       Print only merge commits. This is exactly the same as --min-parents=2.
Run Code Online (Sandbox Code Playgroud)

这是一个--pretty=format:"%H"用于获取SHA 的示例.

$ git log --pretty=format:"%H" --merges -n 1
f32e1f13eef7d5843e8063b8709d01af6dcd5dbf
Run Code Online (Sandbox Code Playgroud)

幸得Jefromi他们在另一个答案评论.


Feu*_*mel 5

一种不依赖于提交消息内容的替代方案:

$ git rev-list --min-parents=2 --max-count=1 HEAD
9c6e6d6b6b9bd293335700e34e05217ae8e7a7e8
Run Code Online (Sandbox Code Playgroud)

--min-parents=2仅选择合并的提交,--max-count=1仅在历史记录中返回时显示第一个提交.如果指定的commit(HEAD)在其历史记录中没有任何合并提交,则输出将为空.