Version controlling my Zettelkästen

Recently I created my own little Zettelkasten and a public version of it, my wiki. While I skimmed through my setup in the initial post, I thought it may be reasonable to take a deeper dive into how you can setup something like this and have a blast writing 💥

Principles

These where my thoughts, or rather requirements, before setting up my version controlled zettelkasten:

  1. Local storage, remote backup
  2. Interoperable (plain text) file format (no system or vendor lock-in)
  3. easy mobile editing must be possible
  4. Only use open software Optional: version control

This just screams git, right? So that’s what I went with. 🤗

Setup

Remotes

  • create a public or private repo
  • if nonexistent: generate an SSH key pair on your machine
  • add the public key to your account Done!

Desktop

  • install zettlr
  • go throught the tutorial
  • "git clone *" the remote repo to the desired location
  • open the repo folder as a workspace in zettlr (File/Open Workspace) Done!

I also automated repetitive git actions, take a look at how I did it for windows.

Mobile

  • install gitjournal
  • connect it to your remote host (Github and Gitlab oAuth work very well and take care of the auth setup)
  • add the repo Done!

IMPORTANT NOTE: you should always make sure you synced (pull, add --all, commit -all, push) before and after working to avoid running into conflicts. While those can be resolved easily, its still something that gets in the way and takes time. 🙄

So far so great

With some hickups its now working pretty well! 🥳 However, I also noticed that (unlike standardnotes) its definitely not a "set and forget" solution and requires some maintenance. For me its worth it, Zettler is just the superior markdown editor and better suited for long texts and connected notes than standardnotes.

Problems I ran into

  • referencing from one workspace into another works, but there is no fancy autocomplete for ID's, although to be fair that generally shouldn't be done too often anyways.
  • New files where not added by my script because I used the wrong git commands. → use "git add --all" instead of "git add ." to add files from subdirectories as well
  • spaces in folders or filepaths are not possible, even if the links contain '%20'

You'll only receive email when they publish something new.

More from Leo