Site banner

Logseq and GitHub

Logseq and GitHub logos side by side. The Logseq logo is on the left with a teal background and features a stylized circle and two smaller shapes forming a face-like icon next to the word "Logseq." The GitHub logo is on the right with a white background, showing the iconic silhouette of a cat with the word "GitHub" beside it.

I don’t think I’ve posted about this before, but I’ve been using Logseq for several years now. One of the things I like most about it is the way it handles blocks and tags. I can add tags directly to individual blocks and have them automatically appear on dedicated pages for that tag. It makes it easy to organize my notes simply by writing in my daily journal and backlinking as I go.

Most of my note-taking happens in the daily pages. Instead of worrying about where something “belongs,” I just write it down, add a few relevant tags, and move on. Over time, this builds up a web of connected notes that I can navigate later through backlinks and tag pages. It’s a very low-friction way of capturing information.

One of Logseq’s biggest strengths is that it stores everything as plain text files—mostly Markdown—in a folder on disk. My notes aren’t locked into a proprietary format, and I can manage them with standard tools. Because of that, I’ve chosen to use GitHub to synchronize my notes across all my devices instead of relying on Logseq’s built-in sync service.

My Logseq graph lives in a private GitHub repository. Any changes I make on one device get committed and pushed to GitHub, and my other devices pull those changes down. This setup works across my Macs, my iPad, and my iPhone. Because everything is just text files, Git handles it very well.

On my Macs, I keep the Logseq folder inside a local Git repository and use Apple Shortcuts to handle the syncing. I use an app called Shortery to automatically trigger those shortcuts when I switch to and when I leave the Logseq app. When Logseq becomes active, a shortcut runs to pull the latest changes. When I leave Logseq, another shortcut commits any updates and pushes them to GitHub.

Behind the scenes, the shortcut commits local changes, pulls updates using rebase, and then pushes everything back up. In practice, this means syncing happens automatically in the background. Most of the time, I don’t even think about it.

On my iPhone and iPad, I use Working Copy to handle all of the Git operations. I’ve cloned the same private repository there, and I use it to pull changes before I start working and to commit and push when I’m done. It’s a manual step on mobile, but it’s quick and reliable, and Working Copy makes Git surprisingly usable on iOS.

One of the big advantages of this approach is that I have complete control over my data. Everything lives in my own repository. I’m not dependent on a third-party sync service or subscription, and if I ever stop using Logseq, I still have all my notes in a standard, readable format.

Another benefit is version history. Every change is tracked. If I accidentally delete something or mess something up, I can usually recover it. Git effectively acts as a built-in backup system, which gives me a lot of peace of mind.

Because I commit and push frequently, conflicts are rare. I usually work on one device at a time, and my Mac shortcuts keep things in sync automatically. When conflicts do happen, they’re generally easy to resolve, since everything is just plain Markdown.

Logseq does offer its own sync service, and for many people that’s probably the simplest option. For me, using GitHub fits better with how I already work. I’m comfortable with Git, I like having full control over my data, and I appreciate having a complete history of my notes.

Using GitHub to sync Logseq across my Macs, iPad, and iPhone has become one of the most reliable parts of my personal knowledge management setup. With Shortery automating things on macOS and Working Copy handling Git on iOS, it fits neatly into my everyday workflow.

It did take some initial setup, and it’s not the most beginner-friendly approach, but once it’s in place, it mostly runs itself. For someone who’s comfortable with Git and likes working with plain text, it’s been well worth it for me.

*****
Written on