homeshick
git-based dotfile synchronizer written in Bash
TLDR
SYNOPSIS
homeshick [options] command [arguments]
DESCRIPTION
homeshick is a Git-based dotfile synchronizer written in Bash. It uses "castles" (Git repositories) to manage dotfiles, creating symlinks from the repository to your home directory.Each castle is a Git repository stored in ~/.homesick/repos/. Files tracked in a castle (with track) are moved into the repository and replaced with symlinks pointing back to the repository copy. This allows version control and easy synchronization across machines. Multiple castles can be installed side by side, letting you combine shared dotfile collections (e.g. an oh-my-zsh castle) with your own.
PARAMETERS
generate CASTLE [CASTLE...]
Create a new castle (dotfiles repository)track CASTLE FILE [FILE...]
Move a file/folder into a castle and replace it with a symlinkcd CASTLE
Change directory to a castle's repository, for running git commands directlyclone URL...
Clone a castle from a Git repository (supports GitHub "user/repo" shorthand)link, symlink [CASTLE...]
Symlink all files in the given castles' (or all castles') home folders into $HOMEpull [CASTLE...]
Run git pull for the given castles (or all castles) and their submodulescheck, updates [CASTLE...]
Check whether castles are behind, ahead, or up to date with their remoterefresh
Check remotes for updates, skipping castles checked within the last weeklist, ls
List all installed castles-q, --quiet
Suppress status output except when input is required-s, --skip
Skip conflicting files in $HOME instead of overwriting them-f, --force
Overwrite conflicting files in $HOME automatically-b, --batch
Run non-interactively, accepting default answers-v, --verbose
Print additional diagnostic output
INSTALL
CAVEATS
Requires Bash 3+ and Git 1.5+. Symlinks may not work correctly on some filesystems or in containers. Conflicts can arise when multiple castles contain the same file; use -f/--force or -s/--skip to resolve them non-interactively.
HISTORY
homeshick was created by Anders Ingemann, with the repository dating to 2012, as a pure Bash alternative to homesick (a Ruby gem). The name combines "home" (dotfiles) with "shell" (Bash implementation).