跳转到内容
返回首页
Feature

版本控制:PocketCode 内置的 Git

无需离开编辑器即可使用 Git。PocketCode 内置暂存、提交、分支、合并、储藏和 GitHub 拉取请求。

更新于:
2 min
作者 Pelayo Naredo
版本控制:PocketCode 内置的 Git

版本控制:PocketCode 内置的 Git

Git 是现代开发的基础。PocketCode 内置了 Git(使用 JGit 库,无需安装任何 git 程序),让你无需离开应用即可管理代码。本地终端没有 git 命令:下面的一切都通过界面完成,终端有它自己的 Git 面板。

可视化 Git 界面

源代码管理

源代码管理 是编辑器的 Git 面板(编辑器菜单 → Git,或在实体键盘上按 Ctrl+Shift+G,或点击状态栏中的分支名)。它显示分支、尚未推送(↑)和尚未拉取(↓)的提交,并把文件分成几组:

  • 已暂存的更改 — 已准备好进入下一次提交
  • 更改 — 已跟踪且被修改的文件
  • 未跟踪 — 新文件

在仓库中,文件浏览器还会标出每个已更改的文件(已修改、已添加、未跟踪、已删除或已重命名),以及包含更改的文件夹。

可视化差异

点击任意已更改的文件,即可在同一个列表中查看差异:

  • 新增的行显示为绿色
  • 删除的行显示为红色
  • 带行号和 +N −M 合计,并有 交换 按钮可对调两侧

基本操作

进行提交

在 源代码管理 中:

  1. 暂存 你想要的文件(暂存全部 暂存所有文件),或用 按块暂存 只暂存文件中的部分代码块
  2. 在 提交信息… 中写好信息
  3. 点击 提交

编辑器在提交、推送、拉取、合并或储藏之后不会显示任何消息,所以请查看列表和 ↑↓ 计数。在 项目 中,项目卡片上的 Commit 按钮会打开 提交更改,里面有 Commit、Commit & Push 和 修订上一次提交,终端的 Git 面板 也有 提交更改。

使用分支

分支位于 项目 中的项目卡片上:点击 Git,再点击 分支。点击某个分支可 切换到此分支,或点击 创建新分支(可同时打开切换开关,立刻切换过去)。这些行在项目有远端(origin)后才会出现;终端的 Git 面板 也可以在本地切换分支并新建分支。这里只列出本地分支,也没有删除或重命名分支的按钮。

合并与变基

在 源代码管理 中点击 合并,选择一个本地分支,再点击 合并到 你当前的分支。对于合并或拉取,没有带引导的冲突解决界面:

  1. 如果两边修改了相同的行,冲突标记(<<<<<<<、=======、>>>>>>>)会留在你的文件里
  2. 打开受影响的文件,保留你要的版本
  3. 暂存并提交,或者重新拉取

带引导的解决界面(逐块选择 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 储藏

无需提交即可临时保存更改。在 源代码管理 中:

  1. 点击 储藏,再点击 储藏更改
  2. 之后点击某个条目即可 应用、弹出 或 丢弃

请注意:新文件(未跟踪)不会被储藏,可选的储藏说明不会随条目保存,并且 弹出 总是取最新的一条;要恢复指定的一条,请对它使用 应用,然后 丢弃。

提交信息技巧

遵循 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、子模块、提交签名和钩子。

本文背后的工具

代码编辑器

准备好试用 PocketCode 了吗?

下载应用,开始用手机编程。