版本控制:PocketCode 内置的 Git
无需离开编辑器即可使用 Git。PocketCode 内置暂存、提交、分支、合并、储藏和 GitHub 拉取请求。
版本控制:PocketCode 内置的 Git
Git 是现代开发的基础。PocketCode 内置了 Git(使用 JGit 库,无需安装任何 git 程序),让你无需离开应用即可管理代码。本地终端没有 git 命令:下面的一切都通过界面完成,终端有它自己的 Git 面板。
可视化 Git 界面
源代码管理
源代码管理 是编辑器的 Git 面板(编辑器菜单 → Git,或在实体键盘上按 Ctrl+Shift+G,或点击状态栏中的分支名)。它显示分支、尚未推送(↑)和尚未拉取(↓)的提交,并把文件分成几组:
- 已暂存的更改 — 已准备好进入下一次提交
- 更改 — 已跟踪且被修改的文件
- 未跟踪 — 新文件
在仓库中,文件浏览器还会标出每个已更改的文件(已修改、已添加、未跟踪、已删除或已重命名),以及包含更改的文件夹。
可视化差异
点击任意已更改的文件,即可在同一个列表中查看差异:
- 新增的行显示为绿色
- 删除的行显示为红色
- 带行号和
+N −M合计,并有 交换 按钮可对调两侧
基本操作
进行提交
在 源代码管理 中:
- 暂存 你想要的文件(暂存全部 暂存所有文件),或用 按块暂存 只暂存文件中的部分代码块
- 在 提交信息… 中写好信息
- 点击 提交
编辑器在提交、推送、拉取、合并或储藏之后不会显示任何消息,所以请查看列表和 ↑↓ 计数。在 项目 中,项目卡片上的 Commit 按钮会打开 提交更改,里面有 Commit、Commit & Push 和 修订上一次提交,终端的 Git 面板 也有 提交更改。
使用分支
分支位于 项目 中的项目卡片上:点击 Git,再点击 分支。点击某个分支可 切换到此分支,或点击 创建新分支(可同时打开切换开关,立刻切换过去)。这些行在项目有远端(origin)后才会出现;终端的 Git 面板 也可以在本地切换分支并新建分支。这里只列出本地分支,也没有删除或重命名分支的按钮。
合并与变基
在 源代码管理 中点击 合并,选择一个本地分支,再点击 合并到 你当前的分支。对于合并或拉取,没有带引导的冲突解决界面:
- 如果两边修改了相同的行,冲突标记(
<<<<<<<、=======、>>>>>>>)会留在你的文件里 - 打开受影响的文件,保留你要的版本
- 暂存并提交,或者重新拉取
带引导的解决界面(逐块选择 Ours、Theirs、Both)只存在于 交互式变基(Pick、Reword、Squash、Fixup、Drop,并带可恢复的备份)之中。它从 GitHub PR 与 Issue 的 ⋮ 菜单打开,而且只在项目的 origin 位于 github.com 时可用。
工作流
Git Flow
main ─────────────────────── production
└── develop ─────────────── development
├── feature/login ──── feature
├── feature/api ────── feature
└── hotfix/bug-123 ── urgent fix
基于主干的开发(Trunk-Based Development)
main ─────────────────────── single main branch
├── short-lived-branch ──── short-lived (< 1 day)
└── feature-flag ────────── hidden feature
平台集成
GitHub
- 上传改动(push)和 下载改动(pull)
- 在应用中处理 拉取请求:列出、创建、合并、关闭和评论
- 议题:列出、创建、关闭和评论
- CI:拉取请求的检查结果(GitHub Actions 及其他)汇总在一处
GitLab
- 从你的仓库克隆、发布本地项目,并通过 HTTPS 推送/拉取
- 其最近一次 CI 流水线运行的状态,显示在 Backend Manager 的状态流中
Bitbucket
- 从你的仓库克隆、发布本地项目,并通过 HTTPS 推送/拉取
- 其最近一次 Pipelines 运行的状态,显示在 Backend Manager 的状态流中
应用内的拉取/合并请求目前仅支持 GitHub(github.com)。 对于 GitLab 和 Bitbucket,请在它们的网页端打开合并请求和拉取请求。
Git 储藏
无需提交即可临时保存更改。在 源代码管理 中:
- 点击 储藏,再点击 储藏更改
- 之后点击某个条目即可 应用、弹出 或 丢弃
请注意:新文件(未跟踪)不会被储藏,可选的储藏说明不会随条目保存,并且 弹出 总是取最新的一条;要恢复指定的一条,请对它使用 应用,然后 丢弃。
提交信息技巧
遵循 Conventional Commits 来写清晰的提交信息:
feat: add OAuth2 authentication
fix: correct email validation error
docs: update README with setup instructions
style: format code with Prettier
refactor: simplify price calculation logic
test: add tests for payment module
chore: update dependencies
源代码管理 中的 AI 消息 按钮会以四种风格(规范式、描述式、祈使式、表情符号)建议提交信息。它并不是 AI:它是根据你更改的文件名在本地按规则生成的建议,所以使用前请先检查。
配置
提交中显示的名字
提交会带上仓库中保存的姓名和邮箱。请在 项目 → 项目卡片 → Git → 提交中显示的名字 中设置。它们起初会从仓库、你已连接的服务或你的 PocketCode 账户填入。
身份验证
PocketCode 仅通过 HTTPS 与远程仓库通信(不支持 SSH 远程地址)。GitHub 和 GitLab 使用 OAuth 设备流连接:在 设置 → 集成 → 已连接的服务 中,应用显示一个代码,你在浏览器中批准。Bitbucket 使用你的 Atlassian 邮箱加 API token。克隆、fetch、pull 以及推送到私有仓库都通过已连接的账户完成,令牌只会发送到 github.com、gitlab.com 和 bitbucket.org;其他任何主机上的远程仓库(GitHub Enterprise、自建 GitLab)收不到凭据。你已连接服务的令牌会加密保存在设备上。如果你用 GitHub 登录 PocketCode 本身,这个 GitHub 令牌也会加密保存在 PocketCode 的后端,后端用它来列出你的仓库。每一个本地操作——commit、branch、merge、stash、diff——在你登录之后都无需联网(应用在登录时需要联网)。
借助内置的 Git,PocketCode 让你在手机上完成日常的 Git 工作流程。无需离开 PocketCode 编辑器,即可进行提交、管理分支并与团队协作。目前没有的功能:SSH 远程地址、Git LFS、子模块、提交签名和钩子。
代码编辑器