当前位置: 首页 > news >正文

成为git砖家(2): gitk 介绍

大家好,我是白鱼。这篇我们介绍 gitk。

gitk 和 fork 界面对比

当我们在 macOS 上执行 brew install git 后, 得到了 git 命令行工具。 然而这条命令并不会安装 gitk. gitk 是 git 自带的图形化界面工具,也可以称为“穷人版 fork”:

在这里插入图片描述
同一个 repo, fork 的界面是:
在这里插入图片描述
实话说, gitk 确实没有 fork 好看, 但是基本功能还是很相似:查看 commit history 的树状图, 查看每个 commit 修改的文件内容、文件列表等。 由于 gitk 免费,并且在 windows, linux, macos 都可用, 不得不说有时候它是最佳选择。

macOS 安装 gitk

brew install git-gui

是的,你没看错, 是 git-gui.

git 官方对于 gitk 的介绍

实际上是来自 pro git 第二版的附录:
https://git-scm.com/book/zh/v2/附录-A%3A-在其它环境中使用-Git-图形界面

如果你读完了本书,那就已经掌握了很多在命令行中使用 Git 的知识了。 你可以用它来处理本地文件,通过网络连接到他人的仓库,以及高效地与他人协同工作。 不过故事到这儿还没结束。Git 通常还会作为一个组件在更大的生态系统中使用, 而终端并不总是最佳的使用方式。现在我们来看看 Git 在其它环境中的使用, 以及其它应用(包括你的应用)是如何与 Git 协同使用的。

当给公司新人 review code,针对 git commit history 出现了非线性提交记录、扰乱了被提交代码本身时,使用 gitk 可视化的查看 commit tree, 表直观。

gitk 是一个历史记录的图形化查看器。 你可以把它当作是基于 git log 和 git grep 命令的一个强大的图形操作界面。 当你需要查找过去发生的某次记录,或是可视化查看项目历史的时候,你将会用到这个工具。

gitk 使用指南

1. 查看 git commit 树

那么 gitk 相比于 git log --graph 命令, 有啥不一样么?是的,图形界面调整字体大小,比终端明显方便的,gitk能更清晰的从 commit tree 看出问题

以 https://github.com/xylcbd/EasyCNN 仓库为例,左图是执行 git log --graph --pretty=oneline 得到的内容,右图是执行 gitk 后进入图形界面看到的内容(鼠标稍微调整了下各个自窗口大小)。显然,左图什么问题都看不出来, 右图很明显看到了橙黄色区域里的commit和底部红色箭头指向的commit重复了:
在这里插入图片描述

具体到两次 “initialize repo.” 的commit,我们从 gitk 分别查看提交时间和作者:
在这里插入图片描述
在这里插入图片描述
可以看到作者、提交时间完全一样。

2. 查看某一段历史记录

gitk 执行的是完整的 commit tree 的查看, 而如果只对某一段 git commit 历史记录感兴趣, 可以只查看这一段的。

例如我们只对 refactoring framework. add MSE loss function. 以及它之前的commit感兴趣,这一段是完全线性的、没有分叉和合并节点的:
在这里插入图片描述
我们看到对应的 commit hash 值是 d065024 开头, 因此关掉 gitk , 在命令行重新打开 gitk 时增加指定 commit hash:

# 格式: gitk <想要查看的最后一个commit>
gitk d065024

在这里插入图片描述

3. gitk 默认查看的是当前分支

仍然是以一团乱麻的 git commit history 的 EasyCNN 仓库为例子,我们发现在 update digit_data_sample. 这次 commit 之前都还挺正常的, 因此从这次 commit 切出 dev 分支:

git checkout -b dev 12c4dca

再用 gitk 查看: 发现界面很清晰了:
在这里插入图片描述

4. gitk 查看所有分支

gitk --all

上述命令查看所有分支的 commit history:

在这里插入图片描述

5. gitk 查看某个目录的 commit 历史记录

用法:

gitk <目录名>

例如

gitk src![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2cf41f9a6fd04d3ab461d58e6b683faa.png)

在这里插入图片描述

6. gitk 查看某个文件的 commit 历史记录

gitk <文件名>

例如

gitk README.md

在这里插入图片描述

结语

gitk 相对于纯粹的命令行还是有明显优势的。 不过,它没法在图形界面忽略或显示不同的分支、remote, 显示文件树时也没有很好看的 icon, 没法和 fork 这样的后起之秀相比较。 但作为一个基本的 git gui工具,它是合格的,并且是跨平台的,值得掌握使用。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 模拟实现c++中的string
  • C# 知识点总结
  • 前端了解到框架-网络复习
  • Unity Canvas动画:UI元素的动态展示
  • Angular 遍历列表时的key
  • Springboot集成Elasticsearch High Level REST Client实现增删改查实战
  • Gateway网关分布式微服务认证鉴权
  • 力扣高频SQL 50题(基础版)第二十五题
  • 基于PyCharm在Windows系统上远程连接Linux服务器中Docker容器进行Python项目开发与部署
  • react组件通信方式
  • 【简单介绍Gitea】
  • 记一次因为在html两个地方引入vue.js导致组件注入失败的问题
  • 算法基础课--学习--第一章
  • 深度学习:如何计算感受野
  • “微软蓝屏”事件,给IT行业带来的宝贵经验和教训
  • ----------
  • (三)从jvm层面了解线程的启动和停止
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Druid 在有赞的实践
  • javascript面向对象之创建对象
  • nfs客户端进程变D,延伸linux的lock
  • node和express搭建代理服务器(源码)
  • PAT A1017 优先队列
  • Python - 闭包Closure
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • python_bomb----数据类型总结
  • scrapy学习之路4(itemloder的使用)
  • SpringCloud集成分布式事务LCN (一)
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • # 数据结构
  • $$$$GB2312-80区位编码表$$$$
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (算法)Travel Information Center
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net core 的缓存方案
  • .NET 分布式技术比较
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)