Clone of the dotgit repository
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Kobus van Schoor 9d9fea55c3 bumped version for new release 1 year ago
.github/workflows fixed coverage and lint job names 1 year ago
docs made documentation a bit more clear regarding what the update command does 1 year ago
dotgit bumped version for new release 1 year ago
old added old dotgit bash version to pip package 2 years ago
pkg bumped version for new release 1 year ago
tests Add hostname to category list for groups 1 year ago
.flake8 started main integration testing, init done 2 years ago
.gitignore added sphinx docs 2 years ago
.readthedocs.yml added sphinx docs 2 years ago
LICENSE added license and readme 2 years ago moved bash completion to pip source package 2 years ago various updates to the docs 2 years ago
makefile added sphinx docs 2 years ago also run unit tests on python 3.9 1 year ago


tests coverage publish-pypi docs downloads

A comprehensive and versatile dotfiles manager

dotgit allows you to easily store, organize and manage all your dotfiles for any number of machines. Written in python with no external dependencies besides git, it works on both Linux and MacOS (should also work on other *nix environments).

Project goals

  • Share files between machines or keep separate versions, all in the same repo without any funny shenanigans
  • Make use of an intuitive filelist which makes organization easy
  • Make git version control convenient and easy to use

Why use dotgit?

  • You can very easily organize and categorize your dotfiles, making it easy to store different setups in the same repo (e.g. your workstation and your headless server dotfiles, stored and managed together)
  • Ease-of-use is baked into everything without hindering more advanced users. For instance, dotgit can automatically commit and push commits for you should you want it to, but you can just as easily make the commits yourself
  • dotgit has an automated test suite that tests its functionality with several versions of Python on Linux and MacOS to ensure cross-platform compatibility
  • Support for both symlinking or copying dotfiles to your home directory. Copying allows you to quickly bootstrap a machine without leaving your repo or dotgit on it
  • No external dependencies apart from git allowing you to install and use dotgit easily in any environment that supports Python
  • Encryption using GnuPG supported to allow you to store sensitive dotfiles

Getting started

To get started with dotgit have a look at dotgit's documentation at

Future goals

The following features are on the wishlist for future releases (more suggestions welcome):

  • Encryption using GnuPG
  • Config file for default behaviour (e.g. verbosity level, hard mode)
  • Templating

Migration from v1.x

If you used the previous bash version of dotgit (pre-v2) you need to follow the migration guide here to make your dotfiles repo compatible with the new version.


Contributions to dotgit are welcome, just open a PR here on the repo. Please note that your contributions should be linted with Flake8 (you can check for linting errors locally by running make lint in the repo) and should also be covered using unit tests using the pytest framework.