GitLab の Compare revisions の結果は多分 git log とトリプルドットの git diff

試した環境

  • 2023/06/04時点のgitlab.com (多分 16.0.1)
  • git version 2.41.0.windows.1

本題

以下のように2つのブランチを用意します。 1つはもう一つのブランチを squash merge します。

$ ## edit and commit in develop branch 
$ git switch main
$ git merge --squash develop
$ git log --oneline --graph --all
* 0209881 (HEAD -> main, origin/main, origin/HEAD) Squashed commit of the following:
| * aaf2826 (origin/develop) edit 2
| * de5eb78 edit 1
| * 132257d add file
|/
* 3361c61 Initial commit

この2つのブランチをダブルドットのgit diffをしても差分はありません。

$ git diff main..develop

しかしこれら2つのブランチを GitLab のリポジトリにpushし Compare revisions で確認すると差分が表示されます。

この差分の結果はダブルドットのgit diffコマンドではなく、トリプルドットのgit diffコマンドの結果に相当します。

$ git diff main...develop
diff --git a/compare-test.txt b/compare-test.txt
new file mode 100644
index 0000000..4f8d76e
--- /dev/null
+++ b/compare-test.txt
@@ -0,0 +1,2 @@
+edittext 1
+edittext 2

それの裏付けになるか分かりませんが、URLを見るとmain...developとトリプルドットになっています。 URLの左右とGitLabの画面の左右が逆になるのは注意が必要です。

https://gitlab.com/[groupname]/[projectname]/-/compare/main...develop?from_project_id=XXXXXXXX&straight=false

ちなみにURLの最後のstraight=falsestraight=trueにすると差分が出なくなります。

コミットの表示はダブルドットのgit logコマンドの結果に近いです。 コマンドの左右とGitLabの画面の左右が逆になるのは注意が必要です。

$ git log --oneline main..develop
aaf2826 (HEAD -> develop, origin/develop) edit 2
de5eb78 edit 1
132257d add file

参考

Git - リビジョンの選択