关于git:git-blame使用示例查看openjdk源码中Socket代码谁写的

52次阅读

共计 1433 个字符,预计需要花费 4 分钟才能阅读完成。

前言

我是在去年,也就是 2020 年的时候,进入一家新的公司才学习的 Git。

有时候,咱们想要弄清楚某一行代码到底是谁退出进来的,此时咱们须要从 git log 中翻找,很是麻烦。

最近才偶尔发现 git blame 这个命令,正是解决“找出真凶”这个问题的疾速办法。

找出“真凶”

首先,你要须要有一个我的项目,我最近须要查阅 openjdk 的源码剖析一个问题,所以罗唆就用它吧。

1. 从 Gitee 克隆近程库:

git clone https://gitee.com/mirrors/openjdk.git

openjdk 当初曾经在 Github 下面开源了, 下载比以前用 Mercurial 从 openjdk.java.net 下载不便多了

国内 Gitee 下面每天从 GitHub 上同步的 openjdk 镜像,对于国内开发者而言,那就更爽了。

2. 进入工作目录

cd openjdk

3. 查看标签

git tag

按方向键 或者 能够滚动查看, 输出 q 能够退出以后的查看。

加上 -l 或者 --list 命令应用通配符来过滤 tag。
例如过滤 jdk8 的标签

git tag -l "jdk8*"

4. 切出标签

git checkout jdk8-b120

如果须要批改,比方加上集体的正文,须要依据标签 jdk8-b120 新切一个分支 feature-jdk8-b120

git checkout -b feature-jdk8-b120 jdk8-b120

5. 查看文件目录

ls -al

列出文件目录:

如果咱们要找 java.net.Socket, 那么就应该去 /jdk/src 目录上来寻找。

cd jdk/src


其中有两大类文件夹:

  • 一类示意操作系统命名的文件夹
  • 另一类则是 share 文件夹

进入 share/classes/java/net

cd share/classes/java/net

6.git blame

查看某个文件的每一行内容由谁所写:

git blame 文件名 

以查看 Socket.java 为例:

git blame Socket.java

后果模式如图所示:

图中 1)、2) 这些符号代表文件的第多少行,符号前面就是文件当行的内容。

从上图咱们就能够看出,J. Duke 这位同志,在 2007-12-01 00:00:00 这个工夫点提交了第 1 行代码。

如果只查文件中某一部分由谁所写:

git blame 文件名 | grep "查找词"

或者:

git blame 文件名 -L a,b

-L 参数示意前面接的是行号 (Line)

a,b 代表查问文件的第 a 行到第 b 行之间的文件内容状况。

a, 则代表从第 a 行到文件结尾

,b 则代表从文件结尾到第 b 行。

6.1 查关键字

如果咱们要查 setReceiveBufferSize 这个办法是谁引入进来的,命令则如下所示:

git blame Socket.java | grep "setReceiveBufferSize"

咱们发现 setReceiveBufferSize 这个办法是 J. Duke 引入进来的。

6.2 查行数

比方咱们晓得构造函数 public Socket(Proxy proxy) 是 115 ~ 151 行, 咱们能够查看一下哪些人参加编写了该构造函数:

git blame Socket.java -L 115,151

如果你想更加弱小,这里有 git blame 命令的具体文档:https://git-scm.com/docs/git-…,供你缓缓啃。

参考博客

Git 系列之 git blame:找出真凶

Git: git tag 应用小结 (给公布版本打标记,切换并批改某个历史版本)

OpenJDK 源码的目录构造

Gitee 下载特定的 Tag 或分支

正文完
 0