MGit是一款Git客户端安卓应用。(Version ≥ Android 12)。拥有常用的拉取、推送、提交、合并、克隆、比较、衍合、择取、创建新的分支、添加本地仓库、重置更改等等功能。当前维护者为 maks/MGit,此分支的设计意义和目标是填补Android平台上对Git知识库同步功能的空白。
增加功能:同步、撤销提交、Tokens设置、默认仓库目录,并所有依赖的软件包进行升级。修复暂存所有文件过慢问题、修复inlater has been closed导致的解压缩问题、修复 avatar 全球通用头像、修复仓库列表打开远程地址问题、修改提交命令中的暂存所有已跟踪的文件选项为暂存所有文件选项,减少一步暂存所有文件的步骤,以及优化一些使用体验等等。2025.12.17:默认外部存储、本地lfs不支持克隆拉取lfs、webdav 服务、下拉刷新状态、新的异步任务、升级jgit、验证凭证管理器逻辑、变更包名
MGit+Gitee用来同步obsidian、logseq等笔记库非常迅速且附加历史版本,可以随时回滚查看历史记录。国内推荐使用Gitee作为同步使用的默认远程仓库;用Github作为工作和备份用的远程仓库,可定时用桌面端Git命令进行同步。在桌面端使用git
remote
add添加多远程仓库Gitee和Github。移动端只使用默认默认的Gitee远程仓库,安装并打开MGit,点击顶部导航栏右侧菜单中的设置,配置Git用户名和用户邮箱。若你的仓库是私有的,则需要配置token账户和token秘钥。Token在Gitee中点击
用户头像-设置-令牌
,然后点击生成令牌。此令牌专用于访问你的私有库。设置好后,点击导航栏最右侧菜单、点击克隆、填入克隆地址,等待克隆完成。你也可以选择导入,在导入时勾选导入为外部仓库。外部仓库和内部仓库的区别在于是否存储在软件自己的内部存储私有目录中,内部存储私有目录一般可以看做:
data/data/package_name、android/data/package_name。
在仓库列表中,点击仓库可以进入仓库详情页,在详情页可以左右滑动,从左到右分别有三个页面依次为:文件、提交、状态。可以在文件查看仓库中的文件,在提交可以查看提交的历史,在状态可以查看修改。一般使用状态查看修改状态,点击未暂存DIFF可以看到有没有修改的还没暂存的文件。我通常会使用仓库详情页中导航栏中最右侧的菜单按钮,打开后点击同步按钮,然后直接按照同步策略进行同步。现在好好享用安卓版本的快速同步功能吧!
- 点击
+图标添加新仓库 - 输入远程URL(见下面的URL格式)
- 输入本地仓库名称 - 注意这不是完整路径,因为MGit将所有仓库存储在同一个本地目录中(可以在MGit设置中更改)
- 点击
Clone按钮 - 如果需要,系统会提示您输入连接到远程仓库的凭据。MGit会将仓库(所有分支)下载到您的设备上
- 点击
+图标添加新仓库 - 点击
Init Local创建本地仓库 - 当提示时,输入该仓库的名称
- 将创建一个本地的空仓库
- 运行在标准端口(22)的SSH:
ssh://username@server_name/path/to/repo - 运行在非标准端口的SSH:
ssh://username@server_name:port/path/to/repo - 需要填写
username- 默认情况下,MGit会尝试以root身份连接。
- HTTP(S) URL:
https://server_name/path/to/repo
配合WebDav客户端(RaiDrive)使用,可在任意安全的局域网环境中将手机挂载为网络磁盘。
以下是对 M2Git WebDav 的功能评估。
| 大类 | 小类 | 功能项 | 对应RFC/标准 | 功能描述 | 普遍支持度/说明 | M2Git 实现情况 |
|---|---|---|---|---|---|---|
| WebDav Class 1 | 1.1 资源与集合管理 | 基本方法 | RFC 4918 | MKCOL(创建集合)、PUT / DELETE / COPY / MOVE |
核心必备 | ✔️ 完整实现文件、目录的创建、删除、复制、移动操作。 |
| 集合成员枚举 | RFC 4918 | PROPFIND 方法配合 Depth: 1 或 infinity,列出集合目录内容 |
核心必备 | ✔️ 使用 FsDirectoryResource 提供目录内容枚举。 |
||
| 覆盖行为与前置条件 | RFC 4918 | Overwrite: T 头, If-Match, If-None-Match 条件操作 |
核心必备 | ✔️ 条件请求支持。 | ||
| 1.2 属性管理 | 死属性与活属性 | RFC 4918 | 死属性:客户端自定义元数据;活属性:由服务器管理,自动填充如文件大小/创建时间等信息 | 核心必备 | creationdate未完全实现。 |
|
| 属性操作方法 | RFC 4918 | PROPFIND(查询)和 PROPPATCH(设置/删除) |
核心必备 | ✔️ 属性操作基本支持,资源可完成属性读写; | ||
| 关键活属性 | RFC 4918 | 如 creationdate, getetag 等属性,服务器生成基础资源元数据 |
实践必备 | |||
| 1.3 方法发现 | OPTIONS 方法 | RFC 7231, 4918 | 声明服务器的可支持功能,例如返回 DAV 标头中识别支持的扩展版本。 |
必备 | ✔️ OPTIONS 方法支持基本能力声明,未包含明确扩展声明,如高级协议支持能力。 | |
| 1.4 内容传输 | 部分内容传输 | RFC 7233 | Range / Content-Range 允许流式传输或断点续传大文件。 |
核心功能 | ✔️ 文件分块传输功能完整,部分内容传输和断点续传实现,但尚未并发优化。 | |
| 1.5 缓存与验证 | 缓存控制 | RFC 7234 | 使用 ETag 和 Last-Modified 确保客户端正常缓存和验证资源版本。 |
重要功能 | Last-Modified,生成值稳定性和唯一性不足,但够用。 |
|
| 实践扩展 | 2.1 配额与存储报告 | 配额属性 | 自定义/DAV: 扩展 |
提供磁盘空间限制或存储监控,如 quota-available-bytes 或使用限额报告。 | 企业功能常见 | ✔️ 基本实现磁盘空间报告功能,仅根目录 |
| 2.2 主流兼容性 | Windows 网盘 | Microsoft 要求 | 确保资源兼容 Windows 的 WebDAV 网盘映射方式(net use 方法)。 |
重要 | ||
| macOS Finder | Apple 要求 | 确保目录在 Finder 应用中的正常展示,包括 .DS_Store 支持。 |
重要 | |||
| 2.3 现代安全 | HTTPS 强制 | 安全最佳实践 | 强制加密传输,将所有 HTTP 请求转为 HTTPS。 | 生产环境必须 | ❌ 未强制支持 HTTPS 或加密传输,传输安全性薄弱。 |
