diff --git a/lib/config/types.ts b/lib/config/types.ts
index 27634a140a6cf2d89ebd9d0d23942460e26f44cd..c349a7066c016ae20ee295861b1c3d6d667b1fb9 100644
--- a/lib/config/types.ts
+++ b/lib/config/types.ts
@@ -1,7 +1,7 @@
 import type { LogLevel } from 'bunyan';
 import type { Range } from 'semver';
 import type { HostRule } from '../types';
-import type { GitNoVerifyOption } from '../util/git';
+import type { GitNoVerifyOption } from '../util/git/types';
 
 export type RenovateConfigStage =
   | 'global'
diff --git a/lib/manager/bundler/artifacts.spec.ts b/lib/manager/bundler/artifacts.spec.ts
index deca0c00d3e518e3b5bf6d924fb185a8df75ac07..d0ce943b323a93d806e816bf2c68058ad4b44c82 100644
--- a/lib/manager/bundler/artifacts.spec.ts
+++ b/lib/manager/bundler/artifacts.spec.ts
@@ -7,7 +7,7 @@ import type { RepoGlobalConfig } from '../../config/types';
 import * as _datasource from '../../datasource';
 import * as docker from '../../util/exec/docker';
 import * as _env from '../../util/exec/env';
-import type { StatusResult } from '../../util/git';
+import type { StatusResult } from '../../util/git/types';
 import type { UpdateArtifactsConfig } from '../types';
 import * as _bundlerHostRules from './host-rules';
 import { updateArtifacts } from '.';
diff --git a/lib/manager/cocoapods/artifacts.spec.ts b/lib/manager/cocoapods/artifacts.spec.ts
index f36e1c8fda2343d63c1c252651c70aa4c44021db..77ca05394ab4668d6aaf91da58d1b35936f28a35 100644
--- a/lib/manager/cocoapods/artifacts.spec.ts
+++ b/lib/manager/cocoapods/artifacts.spec.ts
@@ -7,7 +7,7 @@ import { GlobalConfig } from '../../config/global';
 import type { RepoGlobalConfig } from '../../config/types';
 import * as _datasource from '../../datasource';
 import * as _env from '../../util/exec/env';
-import type { StatusResult } from '../../util/git';
+import type { StatusResult } from '../../util/git/types';
 import type { UpdateArtifactsConfig } from '../types';
 import { updateArtifacts } from '.';
 
diff --git a/lib/manager/composer/artifacts.spec.ts b/lib/manager/composer/artifacts.spec.ts
index 3373630d4bd32cdacc47876160738d65b00f45e4..7ebeaa8f2a42813e607ca8592f054edcab34a357 100644
--- a/lib/manager/composer/artifacts.spec.ts
+++ b/lib/manager/composer/artifacts.spec.ts
@@ -7,7 +7,7 @@ import { PlatformId } from '../../constants';
 import * as _datasource from '../../datasource';
 import * as datasourcePackagist from '../../datasource/packagist';
 import * as docker from '../../util/exec/docker';
-import type { StatusResult } from '../../util/git';
+import type { StatusResult } from '../../util/git/types';
 import * as hostRules from '../../util/host-rules';
 import type { UpdateArtifactsConfig } from '../types';
 import * as composer from './artifacts';
diff --git a/lib/manager/gomod/artifacts.spec.ts b/lib/manager/gomod/artifacts.spec.ts
index 81520b3ac768a4f61f2d75758d7db481ae87e2b8..c4a2d881f56427eff3dc4e9799543cf955af4cd8 100644
--- a/lib/manager/gomod/artifacts.spec.ts
+++ b/lib/manager/gomod/artifacts.spec.ts
@@ -7,7 +7,7 @@ import { GlobalConfig } from '../../config/global';
 import type { RepoGlobalConfig } from '../../config/types';
 import * as docker from '../../util/exec/docker';
 import * as _env from '../../util/exec/env';
-import type { StatusResult } from '../../util/git';
+import type { StatusResult } from '../../util/git/types';
 import * as _hostRules from '../../util/host-rules';
 import type { UpdateArtifactsConfig } from '../types';
 import * as gomod from './artifacts';
diff --git a/lib/manager/gradle-wrapper/artifacts-real.spec.ts b/lib/manager/gradle-wrapper/artifacts-real.spec.ts
index 4ae117f3d7380ab7579996b96e93b5ff0ee2204f..e5ff7af1289a37f13d4aa293cc7dff737c57e1b4 100644
--- a/lib/manager/gradle-wrapper/artifacts-real.spec.ts
+++ b/lib/manager/gradle-wrapper/artifacts-real.spec.ts
@@ -5,7 +5,7 @@ import * as httpMock from '../../../test/http-mock';
 import { git, partial } from '../../../test/util';
 import { GlobalConfig } from '../../config/global';
 import type { RepoGlobalConfig } from '../../config/types';
-import type { StatusResult } from '../../util/git';
+import type { StatusResult } from '../../util/git/types';
 import { ifSystemSupportsGradle } from '../gradle/deep/__testutil__/gradle';
 import type { UpdateArtifactsConfig } from '../types';
 import * as gradleWrapper from '.';
diff --git a/lib/manager/gradle-wrapper/artifacts.spec.ts b/lib/manager/gradle-wrapper/artifacts.spec.ts
index b7770644d8ae49d15863dfaa2bafe89e3c74880f..4d042f021fdfbd362ae5231dbcb8aa25283d46a9 100644
--- a/lib/manager/gradle-wrapper/artifacts.spec.ts
+++ b/lib/manager/gradle-wrapper/artifacts.spec.ts
@@ -12,7 +12,7 @@ import {
 import { GlobalConfig } from '../../config/global';
 import type { RepoGlobalConfig } from '../../config/types';
 import { resetPrefetchedImages } from '../../util/exec/docker';
-import type { StatusResult } from '../../util/git';
+import type { StatusResult } from '../../util/git/types';
 import type { UpdateArtifactsConfig } from '../types';
 import * as gradleWrapper from '.';
 
diff --git a/lib/manager/gradle-wrapper/artifacts.ts b/lib/manager/gradle-wrapper/artifacts.ts
index 98dabbe218ec8a5c35508b1f3bde0d364c8e01e1..3a70a7bf5e1a51142973d37d26706b0b25d89bf3 100644
--- a/lib/manager/gradle-wrapper/artifacts.ts
+++ b/lib/manager/gradle-wrapper/artifacts.ts
@@ -5,7 +5,8 @@ import { TEMPORARY_ERROR } from '../../constants/error-messages';
 import { logger } from '../../logger';
 import { ExecOptions, exec } from '../../util/exec';
 import { readLocalFile, stat, writeLocalFile } from '../../util/fs';
-import { StatusResult, getRepoStatus } from '../../util/git';
+import { getRepoStatus } from '../../util/git';
+import type { StatusResult } from '../../util/git/types';
 import { Http } from '../../util/http';
 import type { UpdateArtifact, UpdateArtifactsResult } from '../types';
 import {
diff --git a/lib/manager/jsonnet-bundler/artifacts.spec.ts b/lib/manager/jsonnet-bundler/artifacts.spec.ts
index 9b358b6fbbf7294592e67a828c88de0595adc9d8..87c666493499b2b5edd87210ec6f00eb8b91000f 100644
--- a/lib/manager/jsonnet-bundler/artifacts.spec.ts
+++ b/lib/manager/jsonnet-bundler/artifacts.spec.ts
@@ -3,7 +3,7 @@ import { envMock, exec, mockExecAll } from '../../../test/exec-util';
 import { env, fs, git } from '../../../test/util';
 import { GlobalConfig } from '../../config/global';
 import type { RepoGlobalConfig } from '../../config/types';
-import type { StatusResult } from '../../util/git';
+import type { StatusResult } from '../../util/git/types';
 import type { UpdateArtifactsConfig } from '../types';
 import { updateArtifacts } from '.';
 
diff --git a/lib/manager/pip-compile/artifacts.spec.ts b/lib/manager/pip-compile/artifacts.spec.ts
index fff86aa9d08564b7fc3f008544424c1c1b78a6d0..6b37eb0e079291307405db7dc302f4cc907bf253 100644
--- a/lib/manager/pip-compile/artifacts.spec.ts
+++ b/lib/manager/pip-compile/artifacts.spec.ts
@@ -7,7 +7,7 @@ import { GlobalConfig } from '../../config/global';
 import type { RepoGlobalConfig } from '../../config/types';
 import * as docker from '../../util/exec/docker';
 import * as _env from '../../util/exec/env';
-import type { StatusResult } from '../../util/git';
+import type { StatusResult } from '../../util/git/types';
 import type { UpdateArtifactsConfig } from '../types';
 import * as pipCompile from './artifacts';
 
diff --git a/lib/manager/pipenv/artifacts.spec.ts b/lib/manager/pipenv/artifacts.spec.ts
index c8351a87592b9026281c8248d62ae9d1eda57be1..2993afd5476b89c21dfd28b3de33046bc76eae91 100644
--- a/lib/manager/pipenv/artifacts.spec.ts
+++ b/lib/manager/pipenv/artifacts.spec.ts
@@ -7,7 +7,7 @@ import { GlobalConfig } from '../../config/global';
 import type { RepoGlobalConfig } from '../../config/types';
 import * as docker from '../../util/exec/docker';
 import * as _env from '../../util/exec/env';
-import type { StatusResult } from '../../util/git';
+import type { StatusResult } from '../../util/git/types';
 import type { UpdateArtifactsConfig } from '../types';
 import * as pipenv from './artifacts';
 
diff --git a/lib/manager/types.ts b/lib/manager/types.ts
index 326c07093bd3772c2c0ff8ec1f5fdd2d6de1e7c5..77f848f35694452c73049a0e1a372e35b2d96ff2 100644
--- a/lib/manager/types.ts
+++ b/lib/manager/types.ts
@@ -6,7 +6,7 @@ import type {
 } from '../config/types';
 import type { ProgrammingLanguage } from '../constants';
 import type { RangeStrategy, SkipReason } from '../types';
-import type { File } from '../util/git';
+import type { File } from '../util/git/types';
 
 export type Result<T> = T | Promise<T>;
 
diff --git a/lib/util/git/author.ts b/lib/util/git/author.ts
index f029ebc3363762127d81232736ff97d616182b9c..26860683b635e788093a9997c944b01b87ac2ad0 100644
--- a/lib/util/git/author.ts
+++ b/lib/util/git/author.ts
@@ -1,11 +1,7 @@
 import addrs from 'email-addresses';
 import { logger } from '../../logger';
 import { regEx } from '../regex';
-
-export interface GitAuthor {
-  name?: string;
-  address?: string;
-}
+import type { GitAuthor } from './types';
 
 export function parseGitAuthor(input: string): GitAuthor | null {
   let result: GitAuthor = null;
diff --git a/lib/util/git/config.ts b/lib/util/git/config.ts
index 7842559b577edb53f81c122b034922654cd5da3e..056189cfca23d9106e8476ab1e6206cce2bb1e45 100644
--- a/lib/util/git/config.ts
+++ b/lib/util/git/config.ts
@@ -1,15 +1,8 @@
 import is from '@sindresorhus/is';
 import { SimpleGitOptions } from 'simple-git';
+import type { GitNoVerifyOption } from './types';
 
-export const enum GitNoVerifyOption {
-  Commit = 'commit',
-  Push = 'push',
-}
-
-let noVerify: GitNoVerifyOption[] = [
-  GitNoVerifyOption.Push,
-  GitNoVerifyOption.Commit,
-];
+let noVerify: GitNoVerifyOption[] = ['push', 'commit'];
 
 export function setNoVerify(value: GitNoVerifyOption[]): void {
   if (!is.array(value, is.string)) {
diff --git a/lib/util/git/index.spec.ts b/lib/util/git/index.spec.ts
index 99e2ec22140af49d7036799c32e663296605538d..23dfe76acf5a0f3ed2938c9658510a5c2b55e221 100644
--- a/lib/util/git/index.spec.ts
+++ b/lib/util/git/index.spec.ts
@@ -5,7 +5,7 @@ import tmp from 'tmp-promise';
 import { GlobalConfig } from '../../config/global';
 import { CONFIG_VALIDATION } from '../../constants/error-messages';
 import * as git from '.';
-import { GitNoVerifyOption, setNoVerify } from '.';
+import { setNoVerify } from '.';
 
 describe('util/git/index', () => {
   jest.setTimeout(15000);
@@ -363,7 +363,7 @@ describe('util/git/index', () => {
           contents: 'some new-contents',
         },
       ];
-      setNoVerify([GitNoVerifyOption.Commit]);
+      setNoVerify(['commit']);
 
       await git.commitFiles({
         branchName: 'renovate/something',
@@ -393,7 +393,7 @@ describe('util/git/index', () => {
           contents: 'some new-contents',
         },
       ];
-      setNoVerify([GitNoVerifyOption.Push]);
+      setNoVerify(['push']);
 
       await git.commitFiles({
         branchName: 'renovate/something',
diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts
index fcd7990b5f6a1fa68f30470de391d0ec3dda10be..58f5450373eef1e28815e19b8dd63e564bd6aa3c 100644
--- a/lib/util/git/index.ts
+++ b/lib/util/git/index.ts
@@ -1,13 +1,6 @@
 import URL from 'url';
 import fs from 'fs-extra';
-import Git, {
-  DiffResult as DiffResult_,
-  Options,
-  ResetMode,
-  SimpleGit,
-  StatusResult as StatusResult_,
-  TaskOptions,
-} from 'simple-git';
+import Git, { Options, ResetMode, SimpleGit, TaskOptions } from 'simple-git';
 import { join } from 'upath';
 import { configFileNames } from '../../config/app-strings';
 import { GlobalConfig } from '../../config/global';
@@ -22,45 +15,27 @@ import {
 } from '../../constants/error-messages';
 import { logger } from '../../logger';
 import { ExternalHostError } from '../../types/errors/external-host-error';
-import { GitOptions, GitProtocol } from '../../types/git';
+import type { GitProtocol } from '../../types/git';
 import { Limit, incLimitedValue } from '../../workers/global/limits';
 import { regEx } from '../regex';
 import { parseGitAuthor } from './author';
-import { GitNoVerifyOption, getNoVerify, simpleGitConfig } from './config';
+import { getNoVerify, simpleGitConfig } from './config';
 import { configSigningKey, writePrivateKey } from './private-key';
-
-export { GitNoVerifyOption, setNoVerify } from './config';
+import type {
+  CommitFilesConfig,
+  CommitSha,
+  LocalConfig,
+  StatusResult,
+  StorageConfig,
+} from './types';
+
+export { setNoVerify } from './config';
 export { setPrivateKey } from './private-key';
 
 declare module 'fs-extra' {
   export function exists(pathLike: string): Promise<boolean>;
 }
 
-export type StatusResult = StatusResult_;
-
-export type DiffResult = DiffResult_;
-
-export type CommitSha = string;
-
-interface StorageConfig {
-  currentBranch?: string;
-  url: string;
-  extraCloneOpts?: GitOptions;
-  cloneSubmodules?: boolean;
-  fullClone?: boolean;
-}
-
-interface LocalConfig extends StorageConfig {
-  additionalBranches: string[];
-  currentBranch: string;
-  currentBranchSha: string;
-  branchCommits: Record<string, CommitSha>;
-  branchIsModified: Record<string, boolean>;
-  ignoredAuthors: string[];
-  gitAuthorName?: string;
-  gitAuthorEmail?: string;
-}
-
 // istanbul ignore next
 function checkForPlatformFailure(err: Error): void {
   if (process.env.NODE_ENV === 'test') {
@@ -660,33 +635,6 @@ export async function hasDiff(branchName: string): Promise<boolean> {
   }
 }
 
-/**
- * File to commit
- */
-export interface File {
-  /**
-   * Relative file path
-   */
-  name: string;
-
-  /**
-   * file contents
-   */
-  contents: string | Buffer;
-
-  /**
-   * the executable bit
-   */
-  executable?: boolean;
-}
-
-export type CommitFilesConfig = {
-  branchName: string;
-  files: File[];
-  message: string;
-  force?: boolean;
-};
-
 export async function commitFiles({
   branchName,
   files,
@@ -764,7 +712,7 @@ export async function commitFiles({
     }
 
     const commitOptions: Options = {};
-    if (getNoVerify().includes(GitNoVerifyOption.Commit)) {
+    if (getNoVerify().includes('commit')) {
       commitOptions['--no-verify'] = null;
     }
 
@@ -795,7 +743,7 @@ export async function commitFiles({
       '--force-with-lease': null,
       '-u': null,
     };
-    if (getNoVerify().includes(GitNoVerifyOption.Push)) {
+    if (getNoVerify().includes('push')) {
       pushOptions['--no-verify'] = null;
     }
 
diff --git a/lib/util/git/types.ts b/lib/util/git/types.ts
new file mode 100644
index 0000000000000000000000000000000000000000..edf2902e214fdd0ff656b3e612e28a72779342d6
--- /dev/null
+++ b/lib/util/git/types.ts
@@ -0,0 +1,58 @@
+import type { GitOptions } from '../../types/git';
+
+export type { DiffResult, StatusResult } from 'simple-git';
+
+export interface GitAuthor {
+  name?: string;
+  address?: string;
+}
+
+export type GitNoVerifyOption = 'commit' | 'push';
+
+export type CommitSha = string;
+
+export interface StorageConfig {
+  currentBranch?: string;
+  url: string;
+  extraCloneOpts?: GitOptions;
+  cloneSubmodules?: boolean;
+  fullClone?: boolean;
+}
+
+export interface LocalConfig extends StorageConfig {
+  additionalBranches: string[];
+  currentBranch: string;
+  currentBranchSha: string;
+  branchCommits: Record<string, CommitSha>;
+  branchIsModified: Record<string, boolean>;
+  ignoredAuthors: string[];
+  gitAuthorName?: string;
+  gitAuthorEmail?: string;
+}
+
+/**
+ * File to commit
+ */
+export interface File {
+  /**
+   * Relative file path
+   */
+  name: string;
+
+  /**
+   * file contents
+   */
+  contents: string | Buffer;
+
+  /**
+   * the executable bit
+   */
+  executable?: boolean;
+}
+
+export type CommitFilesConfig = {
+  branchName: string;
+  files: File[];
+  message: string;
+  force?: boolean;
+};
diff --git a/lib/workers/branch/execute-post-upgrade-commands.ts b/lib/workers/branch/execute-post-upgrade-commands.ts
index 7c863533f9ee769ed49cd4492ebe0ee784a9a659..8a2fc6d0545e7f2aab8595a083f5d4faf467f298 100644
--- a/lib/workers/branch/execute-post-upgrade-commands.ts
+++ b/lib/workers/branch/execute-post-upgrade-commands.ts
@@ -5,7 +5,8 @@ import { addMeta, logger } from '../../logger';
 import type { ArtifactError } from '../../manager/types';
 import { exec } from '../../util/exec';
 import { readLocalFile, writeLocalFile } from '../../util/fs';
-import { File, getRepoStatus } from '../../util/git';
+import { getRepoStatus } from '../../util/git';
+import type { File } from '../../util/git/types';
 import { regEx } from '../../util/regex';
 import { sanitize } from '../../util/sanitize';
 import { compile } from '../../util/template';
diff --git a/lib/workers/branch/get-updated.ts b/lib/workers/branch/get-updated.ts
index 287c705488a3c9ee68ee46234a3e02074b501b0f..2bd880163a4e04190a128b632bbb9d2a680a68ce 100644
--- a/lib/workers/branch/get-updated.ts
+++ b/lib/workers/branch/get-updated.ts
@@ -3,7 +3,8 @@ import { WORKER_FILE_UPDATE_FAILED } from '../../constants/error-messages';
 import { logger } from '../../logger';
 import { get } from '../../manager';
 import type { ArtifactError, PackageDependency } from '../../manager/types';
-import { File, getFile } from '../../util/git';
+import { getFile } from '../../util/git';
+import { File } from '../../util/git/types';
 import type { BranchConfig } from '../types';
 import { doAutoReplace } from './auto-replace';
 
diff --git a/lib/workers/branch/index.spec.ts b/lib/workers/branch/index.spec.ts
index d819e2e03bc2c2ed3419f45218b267880c75259f..196ac118a3621fcaf26315edf367e0681cc7ddb9 100644
--- a/lib/workers/branch/index.spec.ts
+++ b/lib/workers/branch/index.spec.ts
@@ -10,7 +10,7 @@ import * as _npmPostExtract from '../../manager/npm/post-update';
 import type { WriteExistingFilesResult } from '../../manager/npm/post-update/types';
 import { PrState } from '../../types';
 import * as _exec from '../../util/exec';
-import { File, StatusResult } from '../../util/git';
+import type { File, StatusResult } from '../../util/git/types';
 import * as _mergeConfidence from '../../util/merge-confidence';
 import * as _sanitize from '../../util/sanitize';
 import * as _limits from '../global/limits';
diff --git a/lib/workers/types.ts b/lib/workers/types.ts
index 401464f96645412154201cb986a80e4053936fc8..02e0c5a44f4453d6bf69906ad43079eaf719ddab 100644
--- a/lib/workers/types.ts
+++ b/lib/workers/types.ts
@@ -14,7 +14,7 @@ import type {
   PackageFile,
 } from '../manager/types';
 import type { PlatformPrOptions } from '../platform/types';
-import type { File } from '../util/git';
+import type { File } from '../util/git/types';
 import type { MergeConfidence } from '../util/merge-confidence';
 import type { ChangeLogResult } from './pr/changelog/types';