Idea 中查看文件变更
  冰敦   2/13/22 10:17:17 PM
在团队中,大家相互协作做项目的时候,通常的大家都会使用Git进行代码管理,会不断的涉及到代码提交、合并、冲突解决等操作。 有时候在代码提交之前,总想看看自己修改了哪些文件以及文件内容。 或者在每次发版之后发现了一些bug,会做CodeReview,查看已经commit的代码。

导航

  • 查看本地未提交的修改记录
    • 方式1: git 命令查看
    • 方式2: idea 可视化查看
  • 查看已经已经commit的变更记录
    • 方式1: git 命令查看
    • 方式2: idea 可视化查看
  • 结语
  • 参考

用惯了宇宙最强大ide——Visual Studio,再使用别的开发工具总是感觉没有那么人性化。

在做Java开发的时候,我们团队使用的是IntelliJ IDEA 2021版,Download IntelliJ IDEA

在团队中,大家相互协作做项目的时候,通常的大家都会使用Git进行代码管理,会不断的涉及到代码提交、合并、冲突解决等操作。

有时候在代码提交之前,总想看看自己修改了哪些文件以及文件内容。
或者在每次发版之后发现了一些bug,会做CodeReview,查看已经commit的代码。



查看方式其实还是比较多的,有些是可视化操作,有些是git命令执行。

Note: 需要在开发机器上先安装IntelliJ IDEA 2021,gitGit下载,[Download IntelliJ IDEA下载

查看本地未提交的修改记录

方式1: git 命令查看


git status



可以看到,我们有两个文件修改了,workspace.xmlapplication.properties,但是尚未commit。

如果要进一步查看,文件改动了哪些内容呢?

git diff有两个主要的应用场景。

  • 尚未缓存的改动:git diff
  • 查看已缓存的改动: git diff --cached
  • 查看已缓存的与未缓存的所有改动:git diff HEAD
  • 显示摘要而非整个 diff:git diff --stat

我看一下application.properties的变更,

git diff blog-webapp/src/main/resources/application.properties


diff的命令输出格式注意:

  • ---代表源文件
  • +++代表目标文件

通常working area(工作区)的文件都是被当作目标文件来看待。

输出结果中如何查差异呢?

  • -开头的行,是只出现在源文件中的行

  • +开头的行,是只出现在目标文件中的行

  • 空格开头的行,是源文件和目标文件中都出现的行

差异按照差异小结进行组织,每个差异小结的第一行都是定位语句,由@@开头,@@结尾。

比如,图中输出结果的差异小结@@ -1,3 +1,4 @@

@@ -1,3 +1,4 @@
+# 应用端口
server.port=7070
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html

上面的diff结果表明

  • 在源文件第1行开始的3行和目标文件第1行开始的4行构成一个差异小结
  • 这个差异小结中,目标文件添加了一行"# 应用端口"
  • 其他空格开头的行表明没有差异。

但是,如果一个文件的变动地方太多,通过这种方式看起来好像不太直观,有没有更加可视化的方式呢?

Idea编辑器提供了这样的能力。

方式2: idea 可视化查看

在Idea的顶部菜单栏上选择Git->Commit


或者选择view->ToolWindows->Commit或者左侧菜单的Commit展开



然后,我们就可以看到变更的文件了



选择其中一个文件,就可以看看文件的对比差异,



差异一目了然。

查看已经已经commit的变更记录

设想这样一个场景,我们发版之后,过了一会儿,有人反馈生产环境出现了Bug。于是,你赶紧回退了代码到上一版本,生产环境恢复了正常。

接下来,你需要排查bug。大概率,你会根据打开代码,核查一下这个版本的提交记录。

方式1: git 命令查看

git log: 在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log 命令查看。

git log


我们可以用 --oneline 选项来查看历史记录的简洁的版本

lenovo@lenovo-PC MINGW64 /e/JavaProjects/github/superblog (main)
$ git log --oneline
eea489c (HEAD -> main, origin/main, origin/HEAD) fix: change db config
facb52b feat: 添加数据库sql
69fd570 initial
c65279f Initial commit

我们还可以用 --graph 选项,查看历史中什么时候出现了分支、合并。以下为相同的命令,开启了拓扑图选项:

$ git log --graph
* commit eea489c5af1285d3c7c737a3bbef2f4baf559af9 (HEAD -> main, origin/main, origin/HEAD)
| Author: HuYiDaoKing <490822462@qq.com>
Date: Sun Feb 6 22:55:45 2022 +0800
|
| fix: change db config
|
* commit facb52bb752477a5620cccff6d80d9306db94023
| Author: HuYiDaoKing <490822462@qq.com>
Date: Wed Jan 19 23:21:44 2022 +0800
|
| feat: ?????sql
|
* commit 69fd570d5a85515ef62cc100eb2d91bb781ea768
| Author: HuYiDaoKing <490822462@qq.com>
Date: Tue Jan 18 23:12:39 2022 +0800
|
| initial
|
* commit c65279fa575fba0dad50f78dfc7cbdbe9bf32b36
Author: zhikecore-team <490822462@qq.com>
  Date:   Sun Jan 16 18:48:15 2022 +0800

      Initial commit

从上面我们可以看到,总共有四次提交记录。

如果只想查看某一次commit的变更, git show commit_id

比如,只想看eea489c5af1285d3c7c737a3bbef2f4baf559af9这次的修改的文件

git show eea489c5af1285d3c7c737a3bbef2f4baf559af9


这种方式能够看到某次提交的变更,但是不够直观。

方式2: idea上查看

值得欣喜的是,idea上提供了可视化的查看方式。在Idea顶部菜单选择Git->Show Git log


然后,就可以看到历史提交记录


任意选中列表中的一个文件即可查看文件的变更情况。


结语

本文简单介绍了在实际项目开发中,代码管理的两个常用场景。

希望这两个技能能够对您有所帮助。

参考

版权声明: 本文为智客工坊「冰敦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。