---
title: "Overview"
permalink: /docs/overview
---
<a name=""></a><!-- Anchor "#" used at the ends of pagination -->
> You've spent time tweaking your computing environment. Everything operates the
  way you want. That's fantastic! Then your hard drive fails, and the computer
  needs to be rebuilt. **yadm** can restore you configurations.

> You get a new computer, and you want to recreate that environment. You
  probably want to keep both machines' configurations in sync. **yadm** can help
  you coordinate the configurations between your machines.

> You begin experimenting with new changes to your configurations, and now
  everything is broken. **yadm** can help you determine what changed or simply
  revert all of your changes.

**yadm** is like having a version of Git, that only operates on your dotfiles.
 If you know how to use Git, you already know how to use yadm.

* It doesn't matter if your current directory is another Git-managed repository
* You don't have to move your dotfiles, or have them symlinked from another
  location.
* **yadm** automatically inherits all of Git's features, allowing you to branch,
  merge, rebase, use submodules, etc.

As so many others, I started out with a repository of dotfiles and a few scripts
to symbolically link them around my home directory. This quickly became
inadequate and I looked for solutions elsewhere. I've tried other tools, but I
didn't find all of the features I personally wished for in a single tool. This
led to **yadm** being written with the following goals:

* Use a single repository
* Few dependencies
* Ability to use alternate files based on OS or host
* Ability to encrypt and track confidential files
* Stay out of the way and let Git do what it's good at

Follow these links to [install](install) **yadm**
or
learn some simple steps for [getting started](getting_started) with **yadm**.
