关于 IDEA 里的 Enable staging area

关于idea里的 Enable staging area

一、背景

这篇文章研究 IDEA 中 Enable staging area 配置。该配置通常默认不开启,如下图所示。

说明:该选项将 IDEA 默认的 Changelist(变更列表)工作流切换为 Git 原生的暂存区(staging area / index)工作流;仅适用于非模态(non-modal)Commit 界面。

开启前后有什么差异?

开启 Enable staging area 前

Commit 窗口中的未提交文件带有复选框。此时 IDEA 以 Changelist(变更列表)展示本地改动,不会按 Git 的 Staged 和 Unstaged 状态分别显示;可以通过复选框决定本次提交哪些文件。

开启 Enable staging area 后

可以看到:

  • 区分了 Staged 和 Unstaged,分别对应 Git 暂存区(index)中的改动与尚未暂存的工作区改动
  • 文件列表不再通过复选框决定提交范围;需要先将要提交的改动加入 Staged

二、两者更多的区别

2.1、区分显示后,提交范围由 Staged 决定

不能再通过勾选框选择本次提交的文件。Staged 为空时,点击 Commit All 会将当前所有未暂存改动一并纳入本次提交;因此它不适用于按文件选择性提交。

如果要选择性提交 ,先将需要提交的文件加入 Staged,之后点击 Commit。此时 Commit 只会提交 Staged 中的内容。(注意 :当 Staged 中有内容时,Commit All 按钮会变为 Commit,如下图。)

除整个文件外,IDEA 还支持暂存代码块、单行等更细粒度的改动;因此也可以将同一个文件的不同改动分多次提交。

可以观察到

  • 步骤 1:Staged 中没有文件,按钮显示为 Commit All
  • 步骤 2:选中某个文件,执行 + Stage,将它加入暂存区
  • 步骤 3:Staged 中出现文件后,Commit All 变为 Commit,以避免误以为仍会提交全部改动
  • 步骤 4:点击 Commit 后,Staged 中的文件已被提交。即使当时蓝色背景选中了 Test.java(见步骤 3),提交范围也不是"当前选中的文件",而是 Staged 中的全部内容

其他补充

如果要将 Staged 中的文件取消暂存,使用 Unstage:它只会撤销暂存状态,不会丢弃工作区中的文件修改。其效果近似于:

bash 复制代码
git restore --staged <file>

操作如下:

注意:启用该选项会禁用 Changelist 支持。如果原先依赖多个 Changelist 区分任务,切换前应先确认当前 IDEA 版本对已有 Changelist 的处理方式,并以设置页面的提示为准。

三、其他

前文描述的 "工作区和Stage区域的文件分开显示" 如何是如何设置的:

  • File -> New Projects Setup -> Settings for New Projects... -> Version Control -> Git -> Commit 下面有个 Enable staging area
  • File -> Settings... -> Version Control -> Git -> Commit 下面有个 Enable staging area

上面两种改法都等价, 都是全局生效的, 改其中一个会同步体现在另外一个位置

相关推荐
余瑜鱼鱼鱼5 天前
IDea常见问题:JDK isn‘t specified for module ‘docker-demo‘
idea
2601_9621066411 天前
【无标题】
java·idea
开开心心就好11 天前
白天晚上自动调蓝光,护眼工具亮度可调
服务器·开发语言·算法·pdf·ocr·intellij-idea·idea
开开心心就好14 天前
打印机卡住打不了?一键清理卡死打印队列
服务器·开发语言·算法·pdf·ocr·idea·visual studio code
GHN198788817 天前
轻量级开源版 IDEA 来了!
idea
啵啵啵鱼18 天前
对数据的增删改查
数据库·mysql·ai·idea·ai编程·navicat·obsidian
VX_bysjlw98520 天前
数码设备销售网站设计与实现39138-计算机毕设原创(免费领源码+带部署教程)
java·vue.js·spring boot·mysql·tomcat·mybatis·idea
captain37623 天前
Maven
java·后端·idea
JAVA面经实录9171 个月前
IDEA 开发知识
java·intellij-idea·idea