# Can actions/checkout Be Used with a Different Git Provider? A Complete Guide

> Yes, actions/checkout supports GitLab, Bitbucket, and self-hosted Git. Learn how to use the github-server-url input to checkout code from any Git provider.

- Repository: [GitHub Actions/checkout](https://github.com/actions/checkout)
- Tags: how-to-guide
- Published: 2026-07-03

---

**Yes, `actions/checkout` can clone repositories from any Git provider—including GitLab, Bitbucket, or self-hosted GitHub Enterprise—by using the `github-server-url` input to specify a custom Git host.**

The `actions/checkout` action is not limited to GitHub.com. According to the source code in `actions/checkout`, you can configure the action to fetch code from any Git server that supports standard HTTPS or SSH protocols. This flexibility makes it a versatile tool for organizations using multiple Git hosting platforms or self-hosted instances.

## How actions/checkout Builds URLs for Different Git Providers

The action constructs repository URLs dynamically based on your inputs. In [`src/url-helper.ts`](https://github.com/actions/checkout/blob/main/src/url-helper.ts), the `getFetchUrl` function (lines 5‑21) concatenates the server URL with the encoded owner and repository name to generate the final fetch URL.

When you provide the `github-server-url` input, the `getServerUrl` function (lines 23‑31) overrides the default `https://github.com` with your custom base URL. This allows the action to target any Git host that follows the conventional `owner/repo` naming convention.

The `isGhes` function (lines 47‑58) detects whether the target is a GitHub Enterprise Server, but the action treats any non‑GitHub host as a generic Git server. As long as the host supports standard Git protocols, the checkout proceeds normally.

## Configuring the github-server-url Input

The `github-server-url` input is the critical parameter that enables **checkout code from a different Git provider**. When set, it replaces the environment default `GITHUB_SERVER_URL` with your specified base URL.

The action supports two primary authentication patterns for external hosts:

- **HTTPS with token**: Pass a personal access token via the `token` input for HTTP‑basic authentication
- **SSH with private key**: Supply an `ssh-key` to generate SSH‑style URLs (`user@host:owner/repo.git`) as implemented in [`src/url-helper.ts`](https://github.com/actions/checkout/blob/main/src/url-helper.ts) (lines 14‑18)

Both methods work with any Git server that implements the standard Git wire protocol, including GitLab, Bitbucket, Azure DevOps, or Gitea instances.

## Practical Examples for Alternative Git Hosts

### Self-Hosted GitHub Enterprise Server

To checkout from a GitHub Enterprise Server (GHES) instance, specify the server URL and a valid token:

```yaml
- uses: actions/checkout@v4
  with:
    repository: my-org/my-repo
    github-server-url: https://ghes.example.com
    token: ${{ secrets.GHES_TOKEN }}

```

### GitLab or Bitbucket via HTTPS

For GitLab, Bitbucket, or other HTTPS‑accessible Git hosts:

```yaml
- uses: actions/checkout@v4
  with:
    repository: my-group/my-project
    github-server-url: https://gitlab.example.com
    token: ${{ secrets.GITLAB_TOKEN }}

```

The `repository` input accepts the `owner/repo` or `group/project` format used by your specific Git provider.

### Any Git Server via SSH

When using SSH authentication, the action constructs the URL with your specified `ssh-user` (defaulting to `git`):

```yaml
- uses: actions/checkout@v4
  with:
    repository: my-org/another-repo
    github-server-url: https://git.example.com
    ssh-key: ${{ secrets.SSH_PRIVATE_KEY }}
    ssh-user: git

```

This method works with any SSH‑compatible Git server regardless of the hosting platform.

## Key Implementation Details

The flexibility for **actions/checkout different Git provider** support stems from these specific implementation points in the source code:

- **[`src/url-helper.ts`](https://github.com/actions/checkout/blob/main/src/url-helper.ts)**: Contains the URL generation logic that supports both HTTPS and SSH schemes
- **[`src/git-source-provider.ts`](https://github.com/actions/checkout/blob/main/src/git-source-provider.ts)**: Calls `urlHelper.getFetchUrl` and executes the standard `git clone` and `git fetch` commands
- **[`README.md`](https://github.com/actions/checkout/blob/main/README.md)** (lines 166‑170): Documents the `github-server-url` input for fetching from instances other than GitHub.com

The action essentially shells out to standard Git commands, meaning any server that implements the Git protocol correctly will work.

## Summary

- **`actions/checkout` supports any Git provider** that offers HTTPS or SSH access, not just GitHub.com
- Use the **`github-server-url`** input to point to self-hosted GitHub Enterprise, GitLab, Bitbucket, or other Git servers
- Authentication works via **`token`** for HTTPS or **`ssh-key`** for SSH connections
- The URL construction in [`src/url-helper.ts`](https://github.com/actions/checkout/blob/main/src/url-helper.ts) generates appropriate fetch URLs for any host following standard Git naming conventions

## Frequently Asked Questions

### Can actions/checkout work with GitLab repositories?

Yes. Set `github-server-url` to your GitLab instance URL (e.g., `https://gitlab.com` or `https://gitlab.example.com`) and provide a GitLab personal access token via the `token` input. The action treats GitLab as a generic Git host and constructs the appropriate HTTPS URL for fetching.

### What is the github-server-url input used for?

The `github-server-url` input overrides the default GitHub server URL, allowing the action to target alternative Git hosts. According to the README (lines 166‑170), this input ensures the action fetches from the specified instance rather than defaulting to GitHub.com.

### Does actions/checkout support SSH authentication for external providers?

Yes. When you provide the `ssh-key` input, the action builds an SSH‑style URL in [`src/url-helper.ts`](https://github.com/actions/checkout/blob/main/src/url-helper.ts) (lines 14‑18) using the format `user@host:owner/repo.git`. This works with any SSH‑compatible Git server, including Bitbucket, GitLab, and self-hosted solutions.

### Is there a difference between checking out from GitHub vs other providers?

The only difference is URL construction and authentication configuration. The `isGhes` function in [`src/url-helper.ts`](https://github.com/actions/checkout/blob/main/src/url-helper.ts) (lines 47‑58) detects GitHub Enterprise specifically, but the underlying Git operations remain identical. Any provider supporting standard Git protocols works with the same `git clone` and `git fetch` commands executed by [`src/git-source-provider.ts`](https://github.com/actions/checkout/blob/main/src/git-source-provider.ts).