An open API service indexing awesome lists of open source software.

https://github.com/viscouspot/gitsync

Mobile Git client for syncing a repository between remote and a local directory
https://github.com/viscouspot/gitsync

git obsidian productivity sync

Last synced: 14 days ago
JSON representation

Mobile Git client for syncing a repository between remote and a local directory

Awesome Lists containing this project

README

          




GitSync


Mobile git client for syncing a repository between remote and a local directory




license
last commit
downloads
stars
sponsor


2024 Gem of the Year (Obsidian Tools)
  
Wiki




Get it on Google Play
  
Get it on Google Play
  
Get it on Izzy On Droid


Get it on F-Droid
  
Get it on Obtainium


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.

| ![Seamless Git File Sync](https://github.com/ViscousPot/GitSync/blob/main/fastlane/metadata/android/en-GB/images/phoneScreenshots/01.png) | ![Resolve Merge Conflicts on Mobile](https://github.com/ViscousPot/GitSync/blob/main/fastlane/metadata/android/en-GB/images/phoneScreenshots/02.png) | ![Connect any Git Provider](https://github.com/ViscousPot/GitSync/blob/main/fastlane/metadata/android/en-GB/images/phoneScreenshots/03.png) | ![Sync in the Background](https://github.com/ViscousPot/GitSync/blob/main/fastlane/metadata/android/en-GB/images/phoneScreenshots/04.png) | ![Manage it All](https://github.com/ViscousPot/GitSync/blob/main/fastlane/metadata/android/en-GB/images/phoneScreenshots/05.png) | ![Trusted by Developers](https://github.com/ViscousPot/GitSync/blob/main/fastlane/metadata/android/en-GB/images/phoneScreenshots/06.png) |
|---|---|---|---|---|---|

- **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](https://gitsync.viscouspotenti.al/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`](https://github.com/fzyzcjy/flutter_rust_bridge)).

### 1. Prerequisites

- **Flutter**: version pinned in [`.fvmrc`](.fvmrc) (currently 3.35.2). The repo is set up for [FVM](https://fvm.app/); install with `dart pub global activate fvm` and then `fvm install`.
- **Rust**: stable toolchain via [rustup](https://rustup.rs/). The Rust crate lives in [`rust/`](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

```bash
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:

```bash
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:

```bash
cargo install flutter_rust_bridge_codegen --version 2.12.0
flutter_rust_bridge_codegen generate
```

### 5. Run

```bash
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](https://github.com/sponsors/ViscousPot)



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`](untranslated.txt). Even small improvements to wording or grammar are welcome.

## Acknowledgements

- [flutter_rust_bridge](https://github.com/fzyzcjy/flutter_rust_bridge)
- [git2-rs](https://github.com/rust-lang/git2-rs)