Repo Migration from ADO to Github - ashwanisinghel/aksMigration GitHub Wiki

๐Ÿ” Direct Migration: Azure DevOps โžก๏ธ GitHub (No Local Clone)

This guide helps you migrate an Azure DevOps Git repo directly to GitHub without cloning it locally, using token-based auth and a one-liner command.


๐Ÿ” Step 1: Gather Access Tokens

โœ… Azure DevOps (ADO) PAT

โœ… GitHub PAT


๐Ÿ”— Step 2: Format Source and Destination URLs

Replace the placeholders with real values.

# Format:
# ADO (source):
https://<ADO_USERNAME>:<ADO_PAT>@dev.azure.com/<ADO_ORG>/<ADO_PROJECT>/_git/<ADO_REPO>

# GitHub (destination):
https://<GITHUB_USERNAME>:<GITHUB_PAT>@github.com/<GITHUB_USERNAME>/<GITHUB_REPO>.git

โš™๏ธ Step 3: Run Migration (Mirror Push)

# Create a temporary mirror clone (bare repository)
git clone --mirror https://<ADO_USERNAME>:<ADO_PAT>@dev.azure.com/<ADO_ORG>/<ADO_PROJECT>/_git/<ADO_REPO>
cd <ADO_REPO>.git

# Push everything to GitHub
git push --mirror https://<GITHUB_USERNAME>:<GITHUB_PAT>@github.com/<GITHUB_USERNAME>/<GITHUB_REPO>.git

โœ… Step 4: Cleanup

cd ..
rm -rf <ADO_REPO>.git

๐Ÿ“Œ Notes

  • This mirrors all branches, tags, commit history, etc.
  • The repo must already exist on GitHub (create it manually or via CLI).
  • If you want to make it scriptable, replace tokens with environment variables.

๐Ÿงช Example With Variables

export ADO_USER="myuser"
export ADO_PAT="********"
export GITHUB_USER="myghuser"
export GITHUB_PAT="********"
export ADO_REPO="repo1"
export GITHUB_REPO="repo1"
export ADO_PROJECT="MyProject"
export ADO_ORG="MyOrg"

git clone --mirror https://$ADO_USER:$ADO_PAT@dev.azure.com/$ADO_ORG/$ADO_PROJECT/_git/$ADO_REPO
cd $ADO_REPO.git
git push --mirror https://$GITHUB_USER:$GITHUB_PAT@github.com/$GITHUB_USER/$GITHUB_REPO.git
cd ..
rm -rf $ADO_REPO.git

๐Ÿ“˜ References

โš ๏ธ **GitHub.com Fallback** โš ๏ธ