文章目录
前言
在 Android 手机上使用 Termux 进行 Git 操作时,会遇到一些在桌面端没有的问题——比如文件系统权限导致的"可疑所有权"报错、Token 认证配置等。本文将完整梳理从零开始推送仓库的全流程,并逐一解决常见错误。
准备工作:获取 GitHub Token
使用 Token(个人访问令牌)代替密码进行认证,是目前 GitHub 推荐的方式。
- 登录 GitHub,进入 Settings → Developer settings → Personal access tokens → Tokens (classic)
- 点击 Generate new token
- 勾选
repo权限(这是推送代码的必要权限) - 生成后立即复制保存,Token 只显示一次
⚠️ 如果推送时遇到
403 Permission denied,大概率是 Token 没有勾选repo权限,需要重新生成。
完整推送流程
第一步:解决 Termux 的"可疑所有权"问题
在 Termux 中对手机内部存储(/storage/emulated/0)执行 Git 命令时,常见如下报错:
fatal: detected dubious ownership in repository
这是 Git 的安全机制:手机内部存储的文件系统权限管理方式与 Linux 标准不一致,Git 会拒绝操作。
解决方法: 将目标目录加入信任列表。
# 信任指定目录(替换为你的实际路径)
git config --global --add safe.directory /storage/emulated/0/Documents/your-repo-name
如果想一劳永逸地信任所有目录(适合个人手机):
git config --global --add safe.directory '*'
💡 多用户服务器上不建议使用
'*',个人手机完全没问题。
第二步:配置 Git 用户信息
首次使用 Git 时,需要设置提交者身份,否则 git commit 会提示 Author identity unknown:
git config --global user.email "你的邮箱@example.com"
git config --global user.name "你的用户名"
第三步:初始化本地仓库并提交
进入你的项目目录,依次执行:
# 初始化仓库(会创建 .git 文件夹)
git init
# 将所有文件加入暂存区(注意末尾的点 . 不能省略)
git add .
# 创建第一次提交(这一步会正式创建 main 分支!)
git commit -m "Initial commit from Android"
⚠️ 常见误区:
git init和git branch -M main只是初始化动作,并不会真正创建分支。必须有至少一次git commit,分支才真正存在。 跳过这步直接git push会报错:</> PLAINTEXTerror: src refspec main does not match any
第四步:关联带 Token 的远程仓库
将 Token 直接嵌入远程地址,避免每次推送都输入密码:
git remote add origin https://你的用户名:你的TOKEN@github.com/你的用户名/仓库名.git
示例:
git remote add origin https://caifangwen:ghp_xxxxxxxxxxxx@github.com/caifangwen/seo-skill.git
如果已经关联过旧的 origin,改用 set-url 更新:
git remote set-url origin https://你的用户名:你的TOKEN@github.com/你的用户名/仓库名.git
验证地址是否正确:
git remote -v
⚠️ 此命令会明文显示 Token,注意周围环境。
第五步:推送代码
# 将本地分支重命名为 main(GitHub 默认分支名)
git branch -M main
# 推送并建立追踪关系(-u 参数只需第一次使用)
git push -u origin main
推送成功后,后续只需执行 git push 即可。
常见报错速查
| 报错信息 | 原因 | 解决方案 |
|---|---|---|
fatal: detected dubious ownership |
手机存储权限与 Linux 不兼容 | 执行 git config --global --add safe.directory <路径> |
error: src refspec main does not match any |
没有任何 Commit,分支不存在 | 先执行 git add . 和 git commit |
Author identity unknown |
未配置用户信息 | 执行 git config --global user.email/user.name |
403 Permission denied |
Token 权限不足 | 重新生成 Token 并勾选 repo 权限 |
error: remote origin already exists |
已关联过远程地址 | 改用 git remote set-url 而非 git remote add |
安全提示
使用 Token 内嵌 URL 的方式,Token 会以明文保存在项目的 .git/config 文件中。
- 个人专用手机:这种方式非常方便,无需担心。
- 公用或共享设备:推送完成后建议清理,或改用 SSH Key 方式认证。
查看 Token 是否被保存:
cat .git/config
如需移除 Token(保留远程地址但去掉认证信息):
git remote set-url origin https://github.com/你的用户名/仓库名.git
完整命令速查(新仓库从零推送)
# 1. 信任目录(Termux 必做)
git config --global --add safe.directory /storage/emulated/0/Documents/your-repo
# 2. 配置用户信息(首次使用必做)
git config --global user.email "your@email.com"
git config --global user.name "YourName"
# 3. 初始化、提交
git init
git add .
git commit -m "Initial commit from Android"
# 4. 关联远程仓库(替换 TOKEN 和仓库名)
git remote add origin https://username:TOKEN@github.com/username/repo.git
# 5. 推送
git branch -M main
git push -u origin main
评论