GitSync is a cross-platform git client for Android and iOS that aims to simplify the process of syncing a folder between a git remote and a local directory. It works in the background to keep your files synced with a simple one-time setup and a range of options for activating manual syncs.
- Supports Android 5+ & iOS 13+
- Authenticate with
- HTTP/S
- SSH
- OAuth (GitHub, GitLab, Gitea)
- Clone a remote repository
- Sync repository
- Fetch, pull, stage, commit, push
- Resolve merge conflicts
- Retry automatically when the network returns
- Sync mechanisms
- When an app is opened or closed (Android)
- On a recurring schedule
- From a quick tile (Android)
- From a home screen widget
- From an iOS shortcut or automation
- From a custom intent (advanced)
- Browse and edit in-app
- File explorer with code editor and image viewer
- Recent commits, plus file, line and commit diffs
- Branch management (create, rename, delete, checkout)
- Multiple remotes (add, rename, delete, set URL)
- GitHub and GitLab integration (when signed in via OAuth)
- View, comment on and create issues
- View, comment on and create pull requests
- View workflow runs (GitHub Actions)
- AI features
- Chat about your repository
- Wand auto-complete on text fields like commit messages
- Agent that can run repo actions for you
- Separate model selection for chat, tools and the wand
- A global toggle to hide all AI features
- Manage multiple repositories with containers
- Repository settings
- Signed commits
- Customisable sync commit messages
- Author details
- Edit
.gitignore and .git/info/exclude
- Disable SSL verification per repo
More information can be found at the wiki
Give us a ⭐ if you like our work. Much appreciated!
Support
For support, email bugs.viscouspotential@gmail.com or create an issue in this repository.
Build Instructions
If you just want to try the app out, feel free to download a release from an official platform!
GitSync is a Flutter app with a Rust core (via flutter_rust_bridge).
1. Prerequisites
- Flutter: version pinned in
.fvmrc (currently 3.35.2). The repo is set up for FVM; install with dart pub global activate fvm and then fvm install.
- Rust: stable toolchain via rustup. The Rust crate lives in
rust/.
- Android: Android Studio with a recent SDK (compileSdk follows Flutter, minSdk 21). The Rust crate cross-compiles to
aarch64, armv7, x86_64 and i686 targets, which you can add via rustup target add.
- iOS: Xcode 15+ on macOS, the
aarch64-apple-ios, aarch64-apple-ios-sim and x86_64-apple-ios Rust targets, and CocoaPods.
2. Clone & install
git clone https://github.com/ViscousPot/GitSync.git
cd GitSync
fvm flutter pub get
3. OAuth secrets
OAuth providers (GitHub, GitLab, Gitea) need client IDs/secrets. The repo ships a template:
cp lib/constant/secrets.dart.template lib/constant/secrets.dart
Set oauthRedirectUrl = "gitsync://auth". Without these the OAuth sign-in flows won't work, but HTTPS Basic and SSH still do.
4. Generate the Rust ↔ Dart bindings
The bridge is regenerated when the Rust API changes:
cargo install flutter_rust_bridge_codegen --version 2.12.0
flutter_rust_bridge_codegen generate
5. Run
fvm flutter run
Contributing
Your support means a lot! If you find GitSync useful, please:
- Star the repo to help others discover it
- Share it with friends or communities that might benefit
- Consider becoming a GitHub Sponsor
At this time, code contributions aren’t needed anywhere in particular, but I’d love your help improving localization
Localization Contributions
If you’d like to contribute translations:
1. Locate the **English strings** in `lib/l10n/app_en.arb`
2. Find the corresponding language file (e.g. `lib/l10n/app_es.arb` for Spanish)
3. Add or refine translations in the appropriate file
4. Submit a pull request or open an issue with your suggestions
Currently supported languages:
- English (`app_en.arb`, the source file)
- Arabic (`app_ar.arb`)
- Chinese, Simplified (`app_zh.arb`)
- Chinese, Traditional (`app_zh_Hant.arb`, early stage)
- French (`app_fr.arb`)
- German (`app.de.arb`)
- Japanese (`app_ja.arb`)
- Russian (`app_ru.arb`)
- Spanish (`app_es.arb`)
If you'd like to know what's still untranslated for a given locale, see [`untranslated.txt`](https://github.com/ViscousPot/GitSync/blob/HEAD/untranslated.txt). Even small improvements to wording or grammar are welcome.
Acknowledgements