# GitSync: a mobile Git client that keeps a folder in step with a remote

> GitSync is a Flutter and Rust app for Android and iOS that clones and syncs a repository against a local directory in the background. It is built for people who edit plain files on a phone and want Git to do the moving.

**ViscousPot/GitSync** — Mobile Git client for syncing a repository between remote and a local directory

- Repository: https://github.com/ViscousPot/GitSync
- Website: https://gitsync.viscouspotenti.al
- Stars: 2,379 · Forks: 198
- Language: Dart
- License: GPL-3.0
- Published: 2026-09-28 · Updated: 2026-09-28 · Language: en
- Canonical page: https://hysenlabs.com/projects/viscouspot-gitsync

## The gap GitSync fills: a folder on a phone that has to stay in a repository

Most Git clients assume a desktop. You have a working tree, a terminal, and a person who reads the output of `git status` before deciding what to do next. GitSync takes the opposite position. The README describes it as a cross-platform git client for Android and iOS that aims to simplify syncing a folder between a git remote and a local directory, and the emphasis is on the folder rather than the repository.

That distinction matters. The app is not trying to be a portable version of a desktop client. It is trying to make a directory on a phone behave as if it were a checkout, with fetch, pull, stage, commit and push handled for you. The README lists sync triggers that only make sense on a phone: when an app is opened or closed, on a recurring schedule, from a quick tile, from a home screen widget, or from an iOS shortcut or automation. There is also a custom intent option for advanced use.

The intended user is visible in the topics attached to the repository: git, obsidian, productivity, sync. Obsidian vaults are directories of Markdown files, which makes them a natural fit for a Git remote, and the README carries a badge for a 2024 Obsidian Tools award. If you keep notes in a vault and want them versioned without copying files by hand, that is the case GitSync is shaped around. The same logic applies to any folder of text you edit on a phone: configuration notes, a small documentation set, a personal wiki.

## How the sync actually runs: triggers, authentication and conflict handling

GitSync is a Flutter application with a Rust component, according to the repository layout, which contains `lib/`, `rust/`, `rust_builder/` and a `flutter_rust_bridge.yaml` file. The README does not explain what the Rust side does, so the split between Dart and Rust is not documented in the README.

What the README does describe is the sync pipeline: fetch, pull, stage, commit, push. Those five steps are the whole model. There is no separate staging UI described, which means the app decides what to stage. It also states that it retries automatically when the network returns, and that merge conflicts can be resolved in the app. A screenshot caption in the README refers to resolving merge conflicts on mobile, so conflict resolution is presented as a first-class screen rather than an error state.

Authentication is broader than on many mobile clients. The README lists HTTP/S, SSH, and OAuth for GitHub, GitLab and Gitea. The OAuth path unlocks extra features: viewing, commenting on and creating issues and pull requests, plus viewing GitHub Actions workflow runs. If you authenticate with a token or key instead, those integration screens are not available, because the README ties them to being signed in via OAuth.

Repository settings include signed commits, customisable sync commit messages, author details, editing of `.gitignore` and `.git/info/exclude`, and a per-repository option to disable SSL verification. That last one is a real footgun. Disabling certificate verification makes a self-signed server work, and it also removes the check that tells you whether you are talking to the right server. The README presents it as a setting, not a recommendation, and it should be treated that way.

The app also ships AI features: a chat over the repository, a wand for auto-completing text fields such as commit messages, and an agent that can run repository actions. Model selection is separate for chat, tools and the wand, and there is a global toggle to hide all AI features. If you want a sync tool with no model calls in it, that toggle is the control you are looking for, and it is worth checking what it hides before you rely on it.

## Installing GitSync and running a first sync

The README does not give command-line installation steps. It points to distribution channels instead: Google Play, the App Store, IzzyOnDroid, F-Droid, and Obtainium. The build instructions section begins by telling readers who just want to try the app to download a release from an official platform. If you want to build it yourself, the repository is a Flutter project with an FVM configuration (`.fvmrc`, `fvm_config.json`), so the toolchain is pinned through FVM rather than a globally installed Flutter SDK. The README text ends before the build steps themselves, so the exact build commands are not reproduced in this article.

For the common case, install from a store and configure a repository. The flow is: grant the app access to a folder, give it a remote URL and credentials, then let it clone. The README lists clone as a distinct capability, separate from sync, and the same URL you would use on a desktop is the one you enter in the app.

After the clone, the sync itself is the five-step sequence. You can trigger it manually, or configure one of the automatic mechanisms. On Android, opening or closing an app is a trigger, which is how a vault syncs when you leave your notes app. A recurring schedule covers the case where nothing opens. A quick tile or home screen widget gives you a manual button. On iOS, a shortcut or automation plays the same role.

Because the README does not document a command-line interface, the way to check what a sync produced is to look at the same repository from a machine that has a checkout. The commit log is the record of what the app did. The README says sync commit messages are customisable, so the log should show the message pattern you configured rather than a generic one. That is the cheapest way to verify the pipeline end to end without reading Dart source.

## Where GitSync stops: conflicts, automation and the limits of a background sync

The failure modes here are the ones that come with automating Git. A background sync decides when to commit and what to stage. If a file is half-written when the trigger fires, the commit contains the half-written file. The README does not describe a staging review step, and it does not describe how the app decides which changes belong in a sync commit. That is a design trade-off in favour of convenience, and it is the one to weigh before pointing GitSync at a directory you also edit from a desktop.

Conflicts are handled in the app, but the README does not document what happens when a conflict cannot be resolved automatically, nor does it describe a rollback path. The README is silent on rollback. If you need to undo a sync, you are working with Git directly, which means you need a checkout of the same repository somewhere you can run commands.

The app is also not a full Git client. The README lists branch management (create, rename, delete, checkout), multiple remotes, recent commits, and file, line and commit diffs. It does not mention interactive rebase, cherry-pick, submodules, worktrees, hooks management or bisect. For a notes vault none of that matters. For a repository where history is curated, it does.

There is a platform constraint too. The README states support for Android 5+ and iOS 13+. Android background execution has been restricted across versions, and the README does not explain which of the triggers survive which Android power-saving settings. The recurring schedule and the app-open trigger are the two that matter most for unattended use, and neither is documented in terms of battery optimisation exemptions. Treat the schedule as something to verify on your own device rather than something to assume.

## GitSync against Working Copy, and against a plain desktop checkout

The obvious comparison is Working Copy on iOS, which is a full Git client for the platform with a long feature list. The difference in approach is the centre of gravity. Working Copy is a Git client you operate; GitSync is a sync engine you configure once and then mostly ignore. GitSync's README spends its feature list on triggers and background behaviour, and on integration surfaces such as issues, pull requests and workflow runs. Working Copy's model is a repository you work in on the device, with the phone as the primary place where Git operations happen.

If your goal is to make a folder match a remote, GitSync's model is a better fit, because there is nothing to operate. If your goal is to do real Git work on a phone, the sync model gets in the way, because the app is choosing when to commit and what to include.

The other alternative is not an app at all. A desktop checkout plus a file sync tool, or simply editing on a laptop, avoids the whole question. That is the right answer when the repository is large, when history matters, or when you need to review a diff before it becomes a commit. GitSync's value is concentrated in the case where the phone is the only device you have with you and the files are plain text.

## Licence, maintenance and what an upgrade costs you

GitSync is licensed under GPL-3.0, per the repository's `LICENSE.md` and the licence badge in the README. For an end user installing from a store, that means the source is available and modifications you distribute carry the same licence. It does not affect your repository contents, which stay under whatever licence you put on them. If you plan to fork GitSync and ship it inside a commercial product, the GPL-3.0 terms are the thing to read, and this article is not legal advice.

The repository is not archived, and the last push was on 2026-09-17. Releases are frequent and small: v1.8.63 on 2026-08-19, then v1.8.64 and v1.8.65 on 2026-09-10 and 2026-09-11. That pattern suggests incremental fixes rather than long release cycles, and it means version numbers move quickly. If you install through F-Droid, expect a lag between a GitHub release and the build appearing in that repository, because F-Droid builds from source. Obtainium and the direct release channels track GitHub more closely.

The upgrade cost is low for the app itself: store updates and Obtainium handle it. The cost that is not zero is the sync format. The README documents customisable sync commit messages and signed commits, both of which are repository-level settings. Changing them later changes what future commits look like, and if you have automation or filters keyed to a commit message pattern, that pattern is part of your setup.

## Conclusion

Adopt GitSync if you edit a folder of plain text on a phone and want the remote updated without opening a terminal, particularly if that folder is an Obsidian vault. Skip it if you need a full Git client with interactive rebase or submodule handling, because the README lists branch management, diffs and conflict resolution but no rebase or submodule workflow. Before trusting it with anything important, clone a test repository, run one manual sync, and confirm what the app does with a file deleted on the remote while the phone was offline.

## FAQ

### What is GitSync?

It is a cross-platform Git client for Android and iOS that syncs a folder between a git remote and a local directory. The README describes it as working in the background after a one-time setup.

### Is GitSync free?

The README lists no price and points to Google Play, the App Store, IzzyOnDroid, F-Droid and Obtainium as distribution channels. It does carry a GitHub Sponsors badge, so donations are the model the repository presents.

### How do I use GitSync with Obsidian?

Point GitSync at your vault directory and a remote repository, then let it clone and sync. The repository topics include obsidian, and the README carries a 2024 Obsidian Tools award badge.

### How do I use GitSync?

Install it from one of the listed channels, give it a repository URL and credentials, and let it clone. After that, sync runs from the triggers you enable: app open or close, a schedule, a quick tile, a widget, an iOS shortcut, or a custom intent.

### Is GitSync safe?

The README does not make a security claim. It does document an option to disable SSL verification per repository, which weakens the connection check, and it offers OAuth sign-in for GitHub, GitLab and Gitea as an alternative to HTTP/S and SSH credentials.

## Sources

- [License: GPL-3.0](https://github.com/ViscousPot/GitSync/blob/main/LICENSE)
- [Project website](https://gitsync.viscouspotenti.al)
- [README](https://github.com/ViscousPot/GitSync/blob/main/README.md)
- [Releases](https://github.com/ViscousPot/GitSync/releases)
- [ViscousPot/GitSync on GitHub](https://github.com/ViscousPot/GitSync)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/viscouspot-gitsync
