Date

This tutorial is about backing up the configuration under a user's home directory using Git.

Git supports negation of patterns in .gitignore files. To negate a pattern we simply prefix it with !. This feature enables to use .gitignore file in a user's home directory that instructs Git to ignore all files under this directory except the ones matching the patterns prefixed with !.

i.e.

################################################################################
# Ignore everything except what we want to back up (Note that / is the
# root of the repository and not the actual root of the filesystem
################################################################################
/*
################################################################################
# You definitely do not want to ignore your gitignore (:
################################################################################
!/.gitignore
################################################################################
# Files
################################################################################
!/.Xresources
!/Documents/zakkak.vcf
!/.zshrc
################################################################################
# Folders
################################################################################
!/.config/
/.config/*
!/.config/git/
!/.config/htop/
!/.fonts/
!/bin/

Note also that core.excludesfile in the Git configuration must not be set to ~/.gitignore. Please check man git-config to see how you can accomplish this. In general it is advised to use $HOME/.config/git/ignore to set patterns to be globally ignored by Git.

Now you can run git init in the user's home directory to initialize a repository and the git add . to stage all files not ignored by Git based on the new .gitignore. Then git remote add origin url/to/your/repo and you can start tracking the user's configuration and push it upstream so you can sync it across different systems.