How to Clone Your Development Environment to a New Computer
Your dev environment is more than files on disk. It is packages, configs, secrets, repos, and settings across dozens of tools. Here is how to clone all of it.
What Cloning Actually Means
When people talk about "cloning" a development environment, they usually mean copying dotfiles. But your development environment is far more than a handful of config files. It is a complex stack of interconnected layers, each depending on the others. Copy just the dotfiles and you will still spend hours installing packages, cloning repos, and hunting down credentials.
True environment cloning means replicating every layer: the system packages that provide your tools, the shell configuration that makes you fast, the editor setup that matches your workflow, the project configs and secrets that let your code run, and the git repositories you actively work in. Miss any layer and the clone is incomplete.
The 5 Layers of a Dev Environment
Every development environment consists of five distinct layers. Understanding them helps you see why traditional dotfile management only solves part of the problem:
| Layer | Examples | Traditional Approach |
|---|---|---|
| 1. System Packages | git, node, python, docker, ripgrep, jq | Brewfile or manual install list |
| 2. Shell Config | .zshrc, .zprofile, aliases, PATH, prompt | Dotfiles repo with symlinks |
| 3. Editor / IDE | VS Code settings, extensions, keybindings | Settings Sync (partial) |
| 4. Project Configs & Secrets | .env files, API keys, registry tokens | Password manager or Slack messages |
| 5. Git Repositories | Active project repos, their branches and state | Manual clone from memory |
Each layer typically requires a different tool or approach. Homebrew Bundle for packages, a dotfiles repo for shell config, VS Code Settings Sync for editor settings, a password manager for secrets, and manual effort for repos. ConfigSync handles all five layers with a single tool.
Capturing Your Environment
On your current machine — the source of the clone — ConfigSync scans and captures all five layers in one command:
Cloning to Your New Machine
On your new computer, the entire cloning process is three commands:
The --install flag tells ConfigSync to not just restore config files but also install packages, extensions, and clone repositories. Without it, ConfigSync only restores configuration files, which is useful when you want to review before installing.
Preview Before Applying
If you want to see exactly what will change before applying anything, use the dry run flag:
The dry run shows you every file that would be created, modified, or overwritten. The tilde (~) prefix indicates files that already exist and would be updated. This is especially useful when pulling to a machine that already has some configuration in place.
Verifying the Clone
After pulling, you can verify that your new machine matches your source machine using the diff command:
If there are differences — maybe you made a local change or a package failed to install — the diff command shows exactly what diverges. You can then decide whether to push the local changes or pull again to fix the discrepancy.
Beyond One-Time Cloning
Cloning is not a one-time event. As you work across multiple machines, your environments naturally drift apart. You install a new tool on your work laptop, add an alias on your home desktop, or update VS Code extensions on one machine but not the other.
ConfigSync keeps your machines in sync over time. Push from whichever machine you made changes on, pull on the others. The diff command tells you when machines have diverged. It is not just a clone — it is a continuous sync that keeps every machine identical.
Ready to try ConfigSync?
Sync your entire dev environment across machines in minutes. Free forever for up to 3 devices.