审查与提交改动
Changes
Section titled “Changes”Changes(改动)列出已暂存、未暂存、未跟踪和有冲突的文件,可以列表或树形显示,并提供筛选框和All / Unstaged / Staged视图。选中文件即可查看其差异:行带编号、可横向滚动,暂存区、工作区和提交中的改动(包括重命名)都能显示正确的修改前后版本。
- 暂存或取消暂存整个文件、一个代码块(hunk),或已修改文本文件中选中的行。
- 暂存、取消暂存或丢弃正在审查的文件后,会自动跳到下一个文件。
暂存和取消暂存都通过改动队列(change queue)进行:文件会立即移动,并以淡化样式显示,直到Git处理完成,因此你可以一个接一个地暂存文件而无需等待。队列条目按顺序逐个执行。被锁定的index.lock会在几秒内重试——ffgit从不删除它——失败时文件会被移回原处。文件列表工具栏中的Change queue菜单会显示每个条目,并提供Cancel、Retry和Dismiss。
提交编辑器包含摘要、可选的描述和已暂存文件数。修订提交(amend)需要明确选择。提交失败时会保留你的草稿,之后输入的内容也会保留。钩子和签名完全按照Git中的配置运行。
提交前,ffgit会标记需要留意的已暂存文件:
- 超过大小限制的文件(默认50 MiB,可在Cleanup › Suggestions中设置);
- 按Build output in Git规则判定的构建产物;
- 按文件名判定的疑似机密文件(
.env、*.pem、*.p8、*.p12、id_ed25519、*private-key*等)——ffgit不会读取文件内容; .ffignore中列出的文件。
Commit和Amend会一次性列出这些文件及原因,并提供Commit anyway(仍然提交)或Unstage them(取消暂存这些文件)。只有点击后者才会取消暂存,且只针对这些文件。
History
Section titled “History”History(历史)绘制跨分支、标签和远程的拓扑提交图,支持分支筛选、合并连线和分页加载。标记用于区分本地分支、远程跟踪分支、标签、在其他工作树中检出的分支,以及其他工作树的分离HEAD。可按提交信息、作者、哈希、路径或代码搜索历史。
分支与工作树
Section titled “分支与工作树”- 切换或创建分支,切换前会请求确认。
- 发现、创建和打开关联工作树。新工作树会检出其子模块(默认为All,也可选择Top level或None)。
- 克隆、获取(fetch)、拉取和推送。GitHub或GitLab配置可以携带SSH密钥或已保存的令牌,仅供该次Git进程使用。
可见的仓库会根据Git操作、文件系统事件和每两秒一次的状态轮询自动刷新;处于后台的窗口会暂停其文件监视。