MGit is a Git client Android App.
This is a continuation of the SGit project.
- If you encounter any issues (bugs, crashes, etc.) and want to help improve this project, please open an issue on GitHub describing: what the issues are; and how they were caused, to allow for re-creation and fixing of bugs.
- This app requires minimum of for Android v5.0
As of version 1.5.7, MGit no longer provides an internal texteditor, instead if you wish to edit files, you will need to have an editor app installed.
An open source editor that has been tested to work with MGit is "Viper Exit, nee Turbo Editor"
but others that support File Providers should also work.
- Create local repositories
- Clone remote repositories
- Pull from origin
- Delete local repositories
- Browse files
- Browse commit messages (short)
- Checkout branches and tags
- HTTP/HTTPS/SSH are supported (including SSH with private key passphrase)
- Username/Password authentication is supported
- Search local repositories
- Private key management
- Manually choose code language
git diff
between commits- Import existing repositories (that is, you can copy a repository from computer and import to MGit)
- Checkout remote branches
- Merge branches
- Push merged content
- Edit file via external app that can edit the given file type
- Commit and push changed files
- Committer information
- Prompt for password
- Option to save username/password
git status
- Cancel when cloning
- Add modified file to stage
- View state of staged files (aka index)
git rebase
git cherrypick
git checkout <file>
(reset changes of a file)
- Click on the
+
icon to add a new repository - Enter remote URL (see URL format below)
- Enter local repository name - note that this is not the full path, as MGit stores all
repositories in the same local directory (can be changed in MGit settings) - Click the
Clone
button - If required, you will be prompted for credentials to connect to the remote repo. MGit will download the repository (all branches) to your device
- Click on the
+
icon to add a new repository - Click on
Init Local
to create a local repository - Enter the name for this repository when prompted
- A local empty repo will be created
- SSH running on standard port (22):
ssh://username@server_name/path/to/repo
- SSH running on non-standard port:
ssh://username@server_name:port/path/to/repo
username
is needed - by default, MGit tries to connect as root.
- HTTP(S) URL:
https://server_name/path/to/repo
Future enhancements and bugs are tracked here on Github.
See GPLv3
All code written by maks@manichord.com
can at your option also be used under the MIT license.
If you want to help improve this project, contributions, especially translations are very welcome. Also contributions to documentation via the wiki for this repo are also most welcome!
If you would like to contribute code, either a bugfix or a new feature, please make sure there is a open issue that addresses the new code. No Pull Requests will be merged that do not reference an existing issue in the repo.
Please use the Android Studio formatting settings set for this project in the repo.
All strings visible to the user need to go into strings resource file.
- Provide the best GUI git client available on any platform
- Be usable on both phone, tablet and laptop form-factor devices
- Support for proprietary vendor APIs (eg. Github)
For new features, a discussion of the new functionality may need to take place in the comments on the issue covering it, so it may be best for that to occur before you spend time on writing the new code.
The app is about to have a major restructure. All new functionality in the app will be written in Kotlin/Rx per #277. Please be aware that the project is now using Data Binding Library and all future functionality should make use of it.
Fork from this repo, create a new branch, commit your changes and then send a pull request against the master branch of this repo.
If you are working on a branch for some time, you may find that changes to master get merged in the meantime, if that happens please do NOT merge master into your branch! Instead rebase your branch onto the current head of master.