Your Code. Your Rules.

Git Access (OAuth-PAT)

Authenticate the git CLI on git.eu with the OAuth credential helper, a personal access token, or the headless device flow.

Git Access (OAuth-PAT)

Authenticate the git command-line client over HTTPS with OAuth - no password, no token to copy. Scripts and CI use a personal access token instead (Method B).


Find Your Instance Values

Settings → Git Access → Tokens shows the exact git config block generated for your account, ready to paste.


Method A - OAuth (git-credential-oauth)

The recommended setup for interactive use: install the helper once, sign in through your browser the first time, tokens refresh automatically after that.

Step 1 - Install

Install git-credential-oauth for your platform:

Git auto-discovers any git-credential-* executable on your PATH.

Windows

Scoop

scoop install git-credential-oauth

winget

winget install hickford.git-credential-oauth

Chocolatey

choco install git-credential-oauth

Download the binary

Download the Windows binary from the releases page and place it anywhere on your PATH.

macOS

Homebrew

brew install git-credential-oauth
Linux

Debian

sudo apt install git-credential-oauth

Ubuntu

sudo apt install git-credential-oauth

Other distributions (Go toolchain, or prebuilt binary)

go install github.com/hickford/git-credential-oauth@latest

Verify with git credential-oauth --version - it should print a version string.

Step 2 - Configure

Add the helper and your instance's OAuth endpoints to your global git config:

git config --global --add credential.helper store
git config --global --add credential.helper oauth
git config --global credential.https://<INSTANCE>.git.eu.oauthClientId giteu-git
git config --global credential.https://<INSTANCE>.git.eu.oauthAuthURL https://<INSTANCE>.git.eu/oauth/authorize
git config --global credential.https://<INSTANCE>.git.eu.oauthTokenURL https://<INSTANCE>.git.eu/oauth/token
git config --global credential.https://<INSTANCE>.git.eu.oauthDeviceAuthURL https://<INSTANCE>.git.eu/oauth/device/code
git config --global credential.https://<INSTANCE>.git.eu.oauthScopes "repo:read repo:write"

The client id (giteu-git) and scopes are the same on every instance - only the host varies.

Step 3 - Use it

Create the empty repository on your instance first (web UI: New repository). The first git command opens your browser to sign in and approve.

Start from scratch

git clone https://<INSTANCE>.git.eu/<USERNAME>/REPO_NAME.git
cd REPO_NAME

Migrate an existing repository - push --mirror pushes every branch, tag, and ref:

git remote remove origin
git remote add origin https://<INSTANCE>.git.eu/<USERNAME>/REPO_NAME.git
git push --mirror origin

Step 4 - Useful commands

Inspect what is stored

cat ~/.git-credentials

Reject a stored credential for one host - the next operation asks you to sign in again:

printf 'protocol=https\nhost=<INSTANCE>.git.eu\n\n' | git credential reject

Remove all stored credentials

rm ~/.git-credentials

Method B - PAT

A personal access token is a long-lived secret - pick it for scripts, CI jobs, and GUI clients. Every step (create, use, cache) is in Clone and Push over HTTPS.


Headless / Docker

No browser (CI runner, container, SSH session)? Method A's helper falls back to the OAuth device flow.

Step 1 - Trigger the flow

Run your normal git command; the helper prints a verification URL and a user code:

To authenticate, visit:

  https://<INSTANCE>.git.eu/oauth/device

and enter the code: ABCD-1234

Step 2 - Approve on another device

On any device with a browser, open the verification URL, sign in, and enter the user code.

Step 3 - Wait for the exchange

The headless process completes automatically once you approve. Device codes are short-lived: if the code expired, re-run the git command to get a fresh one.


Troubleshooting

Every other HTTPS sign-in error (a refused token, Access denied, could not read Username), with its fix: Knowledge Base - HTTPS Authentication.


About

<INSTANCE> (your instance slug, for example beta2) and <USERNAME> (your account name) resolve automatically in commands and buttons when you are signed in on this site; otherwise swap them for your own values. The values are instance-specific by design - never hardcode a client id, endpoint, or scope list copied from someone else's setup.


Next Steps

Ready to get started?

Manage your tokens and OAuth apps