diff --git a/lib/datasource/go/get-datasource.spec.ts b/lib/datasource/go/get-datasource.spec.ts
index b90e65180ff52c534080df21468781b6a17a0518..66290eb8ec7b100dfa706ac6c6466d190390d1b5 100644
--- a/lib/datasource/go/get-datasource.spec.ts
+++ b/lib/datasource/go/get-datasource.spec.ts
@@ -121,6 +121,23 @@ describe('datasource/go/get-datasource', () => {
         });
       });
 
+      it('supports GitLab deps on private subgroups', async () => {
+        httpMock
+          .scope('https://gitlab.com')
+          .get('/group/subgroup/private.git/v3?go-get=1')
+          .reply(200, loadFixture('go-get-gitlab.html'));
+
+        const res = await getDatasource(
+          'gitlab.com/group/subgroup/private.git/v3'
+        );
+
+        expect(res).toEqual({
+          datasource: gitlabDatasource,
+          lookupName: 'group/subgroup/private',
+          registryUrl: 'https://gitlab.com',
+        });
+      });
+
       it('supports GitLab with URL mismatch', async () => {
         const mismatchingResponse = loadFixture('go-get-github.html').replace(
           'https://github.com/golang/text/',
diff --git a/lib/datasource/go/get-datasource.ts b/lib/datasource/go/get-datasource.ts
index a0a8ef2dce242c648b469a3035dbfadd605e7bdd..cf4a818da9d5b618d095eae4afbcbaf0fead01fd 100644
--- a/lib/datasource/go/get-datasource.ts
+++ b/lib/datasource/go/get-datasource.ts
@@ -45,6 +45,16 @@ async function goGetDatasource(goModule: string): Promise<DataSource | null> {
 
     if (gitlabUrl && gitlabUrlName) {
       if (gitlabModuleName?.startsWith(gitlabUrlName)) {
+        if (gitlabModuleName.includes('.git')) {
+          return {
+            datasource: gitlab.id,
+            registryUrl: gitlabUrl,
+            lookupName: gitlabModuleName.substring(
+              0,
+              gitlabModuleName.indexOf('.git')
+            ),
+          };
+        }
         return {
           datasource: gitlab.id,
           registryUrl: gitlabUrl,