Skip to content

Instantly share code, notes, and snippets.

@meleu
Created April 11, 2022 18:02
Show Gist options
  • Save meleu/053275b6842646b95491bf1af4a6ca0e to your computer and use it in GitHub Desktop.
Save meleu/053275b6842646b95491bf1af4a6ca0e to your computer and use it in GitHub Desktop.
Smarttest way to manage dotfiles

smarttest way to manage your dotfiles with git

disclaimer

I'm assuming you have knowledge about git.

starting a dotfiles repo

# create your configs dir
cd ~
mkdir dotfiles

# start a git repo
cd ~/dotfiles
git init

# create a git repository for you and get the url
git remote add origin git@github.com:${USERNAME}/${REPO_NAME}.git

# tell git that your worktree starts in your $HOME
git config core.worktree '../../'

# ignore everything
echo '*' > ../.gitignore

# once you're ignoring everything, the only way
# to add files is by using The Force™️
git add -f ../.bashrc
git add -f ../.bash_profile
git add -f ../.vimrc
# etc...

# commit your changes to the remote repo
git commit -m "Initial commit"
git push

getting your dotfiles on a new machine

# go to your home dir
cd ~

# clone the repo with the "--no-checkout" option
# (so we can checkout the files in our homedir)
git clone --no-checkout git@github.com:${USERNAME}/${REPO_NAME}.git

# go to the created directory and do the wortree trick
cd ${REPO_NAME}
git config core.worktree '../../'

# checkout your files overwriting the existing ones
git reset --hard origin/master

notes about gitignoring everything

  • Remember: your .gitignore is ignoring "everything" with that *
  • Anything you want to add must be done with git add -f
  • Your git commands will only work while you're in the ~/${REPO_NAME} directory, so if you want to add a new file, you need to git add -f ../${FILENAME}
  • Once a file was added to the list of tracked files, you don't need to use -f for that file anymore.

inspiration

@sir-pinecone
Copy link

Just simplified my setup using this approach, thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment