Skip to content

Kizuna is fully Git-compatible. Use Git clients, integrate with GitHub/GitLab, and migrate seamlessly.

Git Protocol Support ​

Kizuna implements the Git Smart HTTP protocol:

# Clone via HTTPS
git clone https://kizuna.example.com/org/repo.git

# Clone via SSH
git clone [email protected]:org/repo.git

Supported Operations ​

  • git clone
  • git fetch / git pull
  • git push
  • git ls-remote
  • All standard Git operations

Colocated Repositories ​

Work with both Jujutsu and Git simultaneously:

bash
# Initialize colocated repo
jj git init --colocate my-project
cd my-project

# Use jj for daily work
echo "hello" > file.txt
jj log

# Use git when needed
git log
git status

# Push via either tool
jj git push
# or
git push origin main

Git Hooks ​

Git hooks work normally:

bash
# In .git/hooks/pre-commit
#!/bin/bash
npm test

Git Attributes ​

.gitattributes is respected:

*.psd filter=lfs diff=lfs merge=lfs -text
*.pdf diff=pdf

Git LFS ​

Large File Storage is fully supported:

bash
# Setup
git lfs install

# Track files
git lfs track "*.psd"
git lfs track "*.mov"

# Use normally
git add design.psd
git commit -m "Add design"
git push

Kizuna stores LFS objects in configured object storage (S3/R2/MinIO).

Submodules ​

Git submodules work as expected:

bash
# Add submodule
git submodule add https://github.com/user/lib.git libs/lib

# Clone with submodules
git clone --recurse-submodules https://kizuna.example.com/org/repo.git

# Update submodules
git submodule update --init --recursive

GitHub Integration ​

Mirror to GitHub ​

Keep GitHub as backup/mirror:

bash
# Add GitHub as second remote
git remote add github https://github.com/user/repo.git

# Push to both
jj git push  # To Kizuna
git push github main  # To GitHub

Automated Mirroring ​

Configure in repository settings:

  1. Settings → Mirroring
  2. Add GitHub URL
  3. Configure credentials
  4. Enable automatic push

GitHub Actions → Kizuna Actions ​

See CI/CD Migration for converting workflows.

GitLab Integration ​

Similar to GitHub:

bash
# Mirror from GitLab
git remote add gitlab https://gitlab.com/user/repo.git

# Push to both
jj git push
git push gitlab main

IDE Integration ​

VS Code ​

Use Git extensions normally:

  1. Clone repository
  2. Open in VS Code
  3. Use Source Control panel
  4. Or use Jujutsu extension for native jj support

IntelliJ / JetBrains ​

Standard Git integration works:

  1. File → New → Project from Version Control
  2. Enter Kizuna URL
  3. Use VCS features normally

Vim / Neovim ​

vim
" Fugitive works normally
:Gstatus
:Gpush
:Gpull

" Or use jj plugins
Plug 'martinvonz/jj'

CI/CD Integration ​

GitHub Actions Calling Kizuna ​

yaml
name: Sync to Kizuna
on: [push]
jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: |
          git remote add kizuna https://kizuna.example.com/org/repo.git
          git push kizuna main

Kizuna Pipelines Triggering GitHub ​

yaml
name: Mirror to GitHub
on: [push]
jobs:
  mirror:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - run: |
          git remote add github https://github.com/org/repo.git
          git push github main --mirror

SSH Key Setup ​

Not available yet. Git over SSH is not available. Clone and push over HTTPS. The password is a personal access token (repo:read to fetch, repo:write to push). The username can be anything.

bash
git clone https://kizuna.example.com/myadmin/repo.git

Troubleshooting ​

Authentication Failed ​

Use a personal access token as the HTTPS password. A missing or expired token, or a token without repo:write, is rejected on push.

Large Push Failing ​

bash
# Increase buffer
git config http.postBuffer 524288000

Slow Clone ​

bash
# Shallow clone first
git clone --depth 1 https://kizuna.example.com/org/repo.git

# Then deepen
cd repo
git fetch --unshallow

Summary ​

Kizuna's Git compatibility means:

  • No forced migration — Use existing tools
  • Gradual adoption — Mix jj and git workflows
  • Ecosystem access — Integrate with GitHub/GitLab
  • Team flexibility — Each developer chooses their tool

While we recommend Jujutsu for the best experience, Git is always an option.