git 快进合并是否会更改合并提交的 SHA?

Does a git fast-forward merge ever change the merged commit's SHA?

换句话说,快进合并是否保证产生与正在合并的源分支的 HEAD 相同的 GIT SHA?

我在终端测试了这个行为,它适用于我的测试场景:

$ git rev-parse some-branch
0fc9fba2fb1c8a13556da4a333351bc12909c497

$ git merge some-branch --ff-only
Updating 90c6244..0fc9fba
Fast-forward
 b | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 b

$ git rev-parse HEAD  
0fc9fba2fb1c8a13556da4a333351bc12909c497

我可以在我的工具中利用这个条件,例如我用源 GIT SHA 标记构建工件。如果快进保证 SHA 没有变化,我就不必做一些可能代价高昂的重建检查。问题是我必须确定这是真的。

快进合并只是在您的分支上进行索引转发,没有任何提交修改,因此哈希值将相同。