How I Built a Git Migration Process Before the Meeting Ended

Using AI to figure out a repo sync approach in real-time, test it, and hand it to the team before the call was over.

The Situation

We were migrating source control from Azure DevOps to GitHub. The repos had already been moved, but the team was still pushing to Azure DevOps while we prepared for full cutover. GitHub was falling behind.

In a migration planning meeting, the boss assigned each of us a handful of repos to sync. Get the latest Azure DevOps changes into GitHub before we switched workflows.

I knew the shape of the problem - multiple remotes, fetch from one, push to the other - but I didn't have the exact steps memorized. I wasn't going to ask the team to wait while I fumbled through documentation.

What I Did

I pulled up Copilot and described what I needed: sync changes from Azure DevOps to GitHub, preserve commit history, do it through a PR so we maintain traceability.

Within a few minutes I had a draft process. But I didn't just copy-paste it to the team. I ran through it myself on one of my assigned repos. Made sure it actually worked. Made sure I understood what each step was doing.

It worked. I wrote it up and sent it to the team before the meeting ended.

The Point

This is how AI should work for engineers. Not as a replacement for understanding, but as a compression of the research phase. I still had to validate the approach. I still had to know enough to recognize whether the output made sense. But I didn't have to spend an hour piecing together Git documentation to get there.

The value wasn't that AI gave me the answer. The value was that AI got me to a testable hypothesis fast enough to be useful in the moment.


The Process

For reference, here's what we used. This works for any Git migration - just swap the remote names and URLs.

Clone the GitHub repository and navigate into it:

cd C:\Users\YOURNAME\repos
git clone <GITHUB-REPO-URL>
cd <REPO-FOLDER-NAME>

Add Azure DevOps as a second remote:

git remote add azure <AZURE-REPO-URL>

Fetch changes from Azure DevOps:

git fetch azure

Now you have both remotes locally:

Local Repository State:
├── origin (GitHub)
│   └── main
└── azure (Azure DevOps)
    └── main (with new changes)

Create a feature branch from Azure's main and push to GitHub:

git checkout -b YOURNAME/github-migration azure/main
git push -u origin YOURNAME/github-migration

Create a pull request from YOURNAME/github-migrationmain. If you're still using Azure Boards, add AB#<task-id> to the description to link the PR to your task.

After full cutover, clean up:

git remote remove azure

Five minutes per repo. Full history preserved.