Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一篇文章学会使用 gitk,排查 Git 问题就靠它了

一篇文章学会使用 gitk,排查 Git 问题就靠它了

作者头像
DevOps时代
发布于 2020-02-11 09:39:48
发布于 2020-02-11 09:39:48
7.4K4
举报

现在软件开发已经离不开版本控制系统。版本控制系统不仅能保留每个文件所有版本的历史信息,还能够方便查找。另外,也能够让团队协作不受空间和时间的限制。

DevOps端到端的流程管控中,我们需要知道每个阶段的具体详细信息。在开发阶段,版本控制系统能够告诉我们某个特定版本的源代码和配置文件是什么?任意两个版本之间的差异是什么?这个变更是什么时间,由谁修改的,为什么要修改?因此我们很容易知道软件的开发过程。

Git是一个开源的分布式版本控制系统,也是目前用的最多的版本控制系统。因此在平时的开发过程中也难免会遇到代码提交的问题,通过命令分析很不方便,这里介绍一个排查Git问题的工具gitk。

gitk是一个非常强大的图形化工具,现在安装git会自带gitk的应用程序,在代码库的根目录下直接输入gitk会打开这个界面,如下:

gitk的主界面主要包含5个部分:

  1. 主菜单栏显示区
  2. 提交信息显示区,显示提交的基本信息,包括节点树、message、提交人和提交时间
  3. 查询条件检索区,根据检索条件查找的窗口
  4. 具体内容显示区,显示 commit 的变更记录或两个 commit 的 diff 内容
  5. 文件列表显示区,显示的commit的文件列表或两个commit的diff文件列表

下面将这五个部分详细介绍一下:

第一部分:主菜单栏显示区

1、File
  • Update(F5):更新。如果在另一个屏幕上的命令行上做了什么,并希望将这些更改反映在gitk中。该操作更新引用并显示新值,同时仍显示旧值。它在执行了像rebase这样的操作之后最有用,因为可以比较前一个分支头和新的分支头。
  • Reload(Shift+F5): 完全刷新,扔掉以前显示的所有内容。
  • Reread/List references: references包括tags和branches(也可能是远程分支),可以reread、List并且可以选择任意一个显示。如下图:
2、Edit

Preferences:gitk的个人设置窗口。主要是最大显示行数,宽度,空格个数,颜色设置和字体设置。如下图。

3、View

这个菜单主要是设置快速查询视图

通过New view…新建视图,如下图,可以选填一些查询条件,保存后直接点击这个View1 就能查看这个视图的提交记录。下面介绍一下查询条件的设置。

  1. references(space separated list):可以指定一个refs,可以是tag,branch,下面还可以选择All xxx。
  2. commit info(regular expressions):可以指定提交信息的Author、Committer、Message作为查询条件。
  3. Changes to Files:可以指定修改的文件内容作为查询条件,可以是固定的文本,也可以是正则表达式。
  4. Commit Date:可以指定时间范围作为查询条件。
  5. Limit and/or skip a number of revision:可以指定只显示revision数量,或者可以从头跳过一定数量的revisions,值为正整数。
  6. miscellaneous options:其他选项,比如:按时间排序,标记分支侧,限制只显示第一个parent,简单历史显示。还可以使用其他 git log参数。
  7. Enter files and directories to include,one per line:可以指定一些文件或目录,每行一个。
  8. Command to generate more commits to include:这个除了上面指定的选项外,还可以可以指定一些命令来过滤commit记录,更加灵活。
4、Help

①About gitk:gitk简介 ②Key bindings:快捷键

第二部分:提交信息显示区

显示提交的基本信息,包括节点树、message、提交人和提交时间。

1、当切换不同的commit时,底层的SHA1 ID区域会显示当前commit ID。

SHA1 ID:当选择commit时,该commit的ID会在这里显示。 Row:当前行数/总行数。每个commit一行。

2、颜色和粗体

  • 本地分支名称处于绿色背景中,如diffs分支①
  • 远程分支名称处于混合的橙色/绿色背景中,如remotes/origin/diffs②
  • 当前签出的分支名称以粗体显示,如diffs分支①
  • 标签是在黄色背景上,如2.0.0-beta2③
  • 黄色标志着当前的HEAD,如最顶上的HEAD④
  • 黄色方块标记有“注释”的提交(git-notes)(无)

3、右键菜单 可以根据分支和commit显示不同的菜单,完成不同的操作。

①选中一个分支,比如diffs

  • check out this branch:检出这个分支,当有多个分支时且当前HEAD不在该分支时可用。
  • rename this branch:重命名分支。
  • Remove this branch:移除分支,当有多个分支时且当前HEAD不在该分支时可用。

②选中一个 commit

当选中一个commit时,可用的菜单如上图。

灰色说明

  • Diff this->selected、Diff selected ->this、 Make patch这几个需要2个commit进行对比,此时为灰色。
  • Return to mark、Find descendant of this and mark、Compare with marked commit、Diff this->marked commit、Diff marked commit->this 这几个是个marked commit相关,后面会说。
  • 可用菜单 Create tag:基于选中的commit创建一个tag。 Copy commit summary:拷贝提交的信息,包括7位commit ID,message和提交日期。 Write commit to file:将该commit的详细信息写到一个文件,包括提交信息和提交内容。 Create new branch:基于该commit创建分支。 Cherry-pick this commit:将该commit应用到当前HEAD分支。 Reset ${BRANCH} branchs to here:将当前分支重置到当前commit。 Mark this commit:标记当前commit,标记后,右键其他commit时跟marked 相关的菜单可用,只能有一个Marked的commit。 Revert this commit:回退到当前commit。Revert和Reset是不一样的,Revert会生成一个新的commit,但Reset不会。

③基于上面选中且Marked的commit,右键其他任意一个commit,之前灰色的菜单就可用了。

  • Diff this-> selected:当前commit与选中的commit的diff。diff内容会在区域4中显示,diff文件列表在区域5中显示。
  • Diff selected-> this :选中的commit与当前commit的diff。diff内容会在区域4中显示,diff文件列表在区域5中显示。
  • Make patch:将这两个commit的diff生成一个patch文件。
  • Return to mark: 切换回到marked的commit。
  • Find descendant of this and mark:查找当前commit和Marked commit共同的后代节点。
  • Compare with marked commit:当前commit与Marked commit的比较。这里的比较和diff是不一样的。

Diff this->marked commit:当前commit和Marked commit的diff。

Diff marked commit->this:Marked commit与当前commit的diff,与上图相反。

这些是右键菜单的基本功能,可以找一个代码库多练习。第二部分就讲完了。

第三部分:查询条件检索区

根据检索条件查找的窗口

这个窗口是强大的检索功能,能够根据作者、提交人、变更文件、变更内容等查找commit。当我们在排查问题时,一般不记得具体是在那次提交里做的变更,但我们可能会记得是哪个文件,是谁提交的,此时我们就可以通过检索查找commit,对于根据变更文件查找,可以配合使用区域5的文件树,效果会更好。

在Find这一行有几个区域:

  1. Find ↑↓ commit:当根据检索条件检索出结果后,通过上下箭头切换不同的commit。
  2. 检索类型列表
  • containing:包含。与后面的范围配合使用。
  • touching paths:文件路径。
  • adding/removing string:变更内容添加/移除的文本。
  • changing lines matching:变更的行数。
  1. 检索条件,用户输入想要检索的内容
  2. 检索方式
  • Exact:精确匹配
  • IgnCase:忽略大小写
  • Regexp:正则表达式匹配
  1. 检索范围
  • All fields:所有范围。
  • Headline:commit的标题
  • Comments:commit的注释
  • Author:作者
  • Committer:提交者

举几个例子:

1、查找标题里包含“request”字符串的commit。检索出的结果标题粗体显示,检索内容黄底标识。通过上下箭头切换

2、检索变更过pom.xml文件的commit。检索标题粗体显示,通过上下箭头切换

3、检索变更内容包含“diffutils.version”的commit

一般常用的就是这几种情况,其他可以自行练习。

第四部分:具体内容显示区

显示commit的变更记录或两个commit的diff内容。

1、在顶部可用的工具说明: ①Search:可以检索当前显示区里的内容。 ②Diff:显示两个版本的增删差异。该选项时,最后的Line diff,Markup words,Color words是按不同样式显示diff。 ③Old version: 显示旧版本。 ④New version:显示新版本。 ⑤Lines of context:显示变更区域的上下文显示行数,当需要查看更多内容时,可将值设大。 ⑥Ignore space change:是否忽略空格变化。

2、在区域的顶部显示本次提交的信息: ①Author:作者。 ②Committer:提交者。 ③Parent:当前commit的父节点,当为Merge节点时会显示多个Parent,此处为超链,可跳转到相应的节点。 ④Child:当前节点的孩子节点,当从该节点新建不同分支时,会有多个Child,此处为超链,可跳转到相应的节点。 ⑤Branches:当前节点最近的HEAD分支,当前签出的分支可跳转。 ⑥Follows:当前节点最近的上一个Tag。 ⑦Precedes:当前节点最近的下一个Tag,有可能是计划Tag。 ⑧Tag:当前为tag时会显示标签信息。

第五部分:文件列表显示区

显示的 commit的文件列表或两个commit的diff文件列表。

1、顶部工具说明 ①Patch:显示只有变更的文件列表,默认显示此项。 ②Tree:显示全部文件树,当想查看其他未变更文件内容时,可选择此项。

2、在文件路径上右键菜单

  • Highlight this too:当其他文件已经高亮时,如此也想将变更文件包含该文件的commit也高亮可选择此项。
  • Highlight this only:只将变更文件包含该文件的commit高亮显示。
  • External diff:使用外部的diff工具查看。
  • Blame Parent commit:能够查看该文件的全部内容的变更记录,并能够进行切换。如下图:
  • Copy path:拷贝文件路径。

到此,gitk的使用教程就结束了,希望对工作中使用git的朋友有帮助,觉得有用可以分享给其他朋友,有问题可以联系交流。

来源:本文转自公众号DevOps亮哥,点击阅读原文

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps时代 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
4 条评论
热度
最新
很强,完全懂了
很强,完全懂了
回复回复1举报
作者很强,我有个小问题,爬虫我这里运行不起来,nodes = soup.select("textarea.J-qcSideNavListData"),这里的节点我发现网页元素并没有这些节点名称,感谢您的解答
作者很强,我有个小问题,爬虫我这里运行不起来,nodes = soup.select("textarea.J-qcSideNavListData"),这里的节点我发现网页元素并没有这些节点名称,感谢您的解答
11点赞举报
估计是腾讯云改版了,导致爬虫找不到这个节点了,你可以F12 去查找帮助文档中的节点,可能名字不一样而已
估计是腾讯云改版了,导致爬虫找不到这个节点了,你可以F12 去查找帮助文档中的节点,可能名字不一样而已
回复回复点赞举报
tql
tql
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
基于 InternLM 和 LangChain 搭建你的知识库
InternStudio (OpenAIDE)[1] 是面向算法开发者与研究员的云端集成开发环境。基于「容器实例」,「镜像中心」,「分布式训练」,「公开数据集」模块为用户提供 “算力、算法、数据” 深度学习模型训练三要素,让算法开发变得更简单、更方便。笔者认为 InternStudio 是支撑书生·浦语大模型全链路开源开放体系的坚实基础,让我们在学习理论之后能够在开发机上实战。
胡琦
2025/05/20
1210
基于 InternLM 和 LangChain 搭建你的知识库
【腾讯云云上实验室】用向量数据库解决如何快速上线智能问答应用
腾讯云向量数据库专门存储和检索向量数据的服务提供给用户, 在高性能、高可用、大规模、低成本、简单易用、稳定可靠、智能运维等方面体现出显著优势,在免费的版本中虽然无法创建副本,但是能满足几乎所有的测试需求。当下腾讯云向量数据库官方给了一些应用示例,例如有:大规模知识库、推荐系统、问答系统、文本/图像检索。
红目香薰
2023/11/23
5372
【腾讯云云上实验室】用向量数据库解决如何快速上线智能问答应用
【腾讯云云上实验室】向量数据库+LangChain+LLM搭建智慧辅导系统实践
得益于深度学习的快速发展和数据规模的不断扩大,以GPT、混元、T5等为代表的大语言模型具备了前所未有的自然语言处理和生成能力,然而,在实际应用中,大语言模型的高效存储、检索和推理成为了一个新的挑战。
中杯可乐多加冰
2023/11/25
1.7K1
【玩转 GPU】搭建本地知识库--chatGLM+langchain(尝鲜篇)
有一天发现,在腾讯文档中想搜索之前写的东西需要收费了。这钱非花不可吗?好像不用。我们可以利用langchain+chatGLM在本地搭建自己的知识库,除了能搜索到文档这个功能,还能基于知识库内容和你进行对话问答~
languageX
2023/07/03
10.8K0
LangChain + ChatGLM2-6B 搭建个人专属知识库
之前教过大家利用 langchain + ChatGLM-6B 实现个人专属知识库,非常简单易上手。最近,智谱 AI 研发团队又推出了 ChatGLM 系列的新模型 ChatGLM2-6B,是开源中英双语对话模型 ChatGLM-6B 的第二代版本,性能更强悍。
程序员树先生
2023/07/14
6.1K6
LangChain + ChatGLM2-6B 搭建个人专属知识库
ChatGLM实战:用Langchain-ChatGLM解析小说《天龙八部》
上一章我们介绍了《如何使用Transformers加载和运行预训练的模型》,实现了与GPT模型的对话和咨询功能。然而,这种原生模型的知识是有限的,它无法对一些未知内容做出准确的回答,比如最新的时事、小众的小说,以及法院档案中的案件等。通过使用Langchain,我们有可能使GPT模型能够理解文章内容并进行分析,从而弥补这一限制。
MavenTalker
2023/09/06
1.3K0
ChatGLM实战:用Langchain-ChatGLM解析小说《天龙八部》
【腾讯云云上实验室】用向量数据库——实现高效文本检索功能
想必各位开发者一定使用过关系型数据库MySQL去存储我们的项目的数据,也有部分人使用过非关系型数据库Redis去存储我们的一些热点数据作为缓存,提高我们系统的响应速度,减小我们MySQL的压力。那么你有听说过向量数据库吗?知道向量数据库是用来做什么的吗?
熬夜磕代码
2023/11/25
1K1
【腾讯云云上实验室】用向量数据库——实现高效文本检索功能
基于 ChatGLM-6B 搭建个人专属知识库
之前树先生教过大家如何利用微调打造一个垂直领域的 LLM 专属模型。但是微调一方面需要专业知识,通常需要很多计算资源和时间,以便在不同的超参数设置上训练多个模型并选择最佳的一个,另一方面动态扩展比较差,新增和修改原有的数据都要重新微调一次。总得来说对非专业人员不友好。
程序员树先生
2023/05/16
4K6
基于 ChatGLM-6B 搭建个人专属知识库
LLM 大模型学习必知必会系列(三):LLM和多模态模型高效推理实践
代码演示:使用 ModelScope NoteBook 完成语言大模型,视觉大模型,音频大模型的推理
汀丶人工智能
2024/05/26
9190
LLM 大模型学习必知必会系列(三):LLM和多模态模型高效推理实践
基于InternLM和LangChain搭建自己的知识库
为了突破LLM的局限性,目前有两种范式可行:RAG(检索增强生成)和Finetune(模型微调)。
阿提说说
2024/03/01
1.1K0
基于InternLM和LangChain搭建自己的知识库
基于LangChain-Chatchat实现的本地知识库的问答应用-快速上手(检索增强生成(RAG)大模型)
基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的检索增强生成(RAG)大模型知识库项目。
汀丶人工智能
2024/05/07
1.7K0
基于LangChain-Chatchat实现的本地知识库的问答应用-快速上手(检索增强生成(RAG)大模型)
解密Prompt系列8. 无需训练让LLM支持超长输入:知识库 & Unlimiformer & PCW & NBCE
这一章我们聊聊有哪些方案可以不用微调直接让大模型支持超长文本输入,注意这里主要针对无限输入场景。之前在BERT系列中我们就介绍过稀疏注意力和片段递归的一些长文本建模方案长文本建模 BigBird & Longformer & Reformer & Performer,不过以上方案无一例外都需要在训练阶段引入。针对当前大模型微调成本高的问题,更多研究放到如何在模型外部支持长文本输入。先讨论下为啥当前的大模型会在推理时存在输入长度的限制,主要有以下几点原因
风雨中的小七
2023/06/12
6K0
解密Prompt系列8. 无需训练让LLM支持超长输入:知识库 & Unlimiformer & PCW & NBCE
ChatGLM3 源码分析(四)
ApacheCN_飞龙
2024/03/12
3890
RAG实操教程langchain+Milvus向量数据库创建你的本地知识库
RAG 是retrieval-augmented-generation的缩写,翻译为中文的意思就检索增强,以基于最新,最准确的数据建立LLM 的语料知识库。
用户1418987
2024/09/06
1.8K0
RAG实操教程langchain+Milvus向量数据库创建你的本地知识库
基于LangChain-Chatchat实现的本地知识库的问答应用-快速上手(检索增强生成(RAG)大模型)
基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的检索增强生成(RAG)大模型知识库项目。
汀丶人工智能
2024/05/06
1.2K0
基于LangChain-Chatchat实现的本地知识库的问答应用-快速上手(检索增强生成(RAG)大模型)
LLM 大模型学习必知必会系列(三):LLM和多模态模型高效推理实践
代码演示:使用 ModelScope NoteBook 完成语言大模型,视觉大模型,音频大模型的推理
汀丶人工智能
2024/05/28
9690
LLM 大模型学习必知必会系列(三):LLM和多模态模型高效推理实践
教程|使用免费GPU 资源搭建专属知识库 ChatGLM2-6B + LangChain
“ 搭建私人定制化AI知识库!详解如何使用云计算资源,部署ChatGLM和LangChain模型,打造专属智能问答工具。”
技术人生黄勇
2024/07/19
3010
教程|使用免费GPU 资源搭建专属知识库 ChatGLM2-6B + LangChain
【腾讯云云上实验室-向量数据库】Tencent Cloud VectorDB在实战项目中替换Milvus测试
亮点:Tencent Cloud VectorDB支持Embedding,免去自己搭建模型的负担(搭建一个生产环境的模型实在耗费精力和体力)。
用户8441651
2023/11/23
7771
使用ChromaDB和Python构建RAG驱动的LLM聊天应用
利用检索增强生成 (RAG) 和大型语言模型 (LLM) 的强大功能来创建生成式 AI 应用程序。
云云众生s
2024/04/05
1.3K0
ChatGLM3-6B的Transformers.Model的核心接口说明
ChatGLM3-6B是10月底最新发布的智谱AI语言大模型。效果确实有明显的进步。但从文档上来看,仅有几个Demo以及B站官网视频 https://www.bilibili.com/video/BV1uC4y1J7yA 可供参考。但如果希望深入研究,关键的调用:
buzzfrog
2023/11/09
2.9K0
推荐阅读
基于 InternLM 和 LangChain 搭建你的知识库
1210
【腾讯云云上实验室】用向量数据库解决如何快速上线智能问答应用
5372
【腾讯云云上实验室】向量数据库+LangChain+LLM搭建智慧辅导系统实践
1.7K1
【玩转 GPU】搭建本地知识库--chatGLM+langchain(尝鲜篇)
10.8K0
LangChain + ChatGLM2-6B 搭建个人专属知识库
6.1K6
ChatGLM实战:用Langchain-ChatGLM解析小说《天龙八部》
1.3K0
【腾讯云云上实验室】用向量数据库——实现高效文本检索功能
1K1
基于 ChatGLM-6B 搭建个人专属知识库
4K6
LLM 大模型学习必知必会系列(三):LLM和多模态模型高效推理实践
9190
基于InternLM和LangChain搭建自己的知识库
1.1K0
基于LangChain-Chatchat实现的本地知识库的问答应用-快速上手(检索增强生成(RAG)大模型)
1.7K0
解密Prompt系列8. 无需训练让LLM支持超长输入:知识库 & Unlimiformer & PCW & NBCE
6K0
ChatGLM3 源码分析(四)
3890
RAG实操教程langchain+Milvus向量数据库创建你的本地知识库
1.8K0
基于LangChain-Chatchat实现的本地知识库的问答应用-快速上手(检索增强生成(RAG)大模型)
1.2K0
LLM 大模型学习必知必会系列(三):LLM和多模态模型高效推理实践
9690
教程|使用免费GPU 资源搭建专属知识库 ChatGLM2-6B + LangChain
3010
【腾讯云云上实验室-向量数据库】Tencent Cloud VectorDB在实战项目中替换Milvus测试
7771
使用ChromaDB和Python构建RAG驱动的LLM聊天应用
1.3K0
ChatGLM3-6B的Transformers.Model的核心接口说明
2.9K0
相关推荐
基于 InternLM 和 LangChain 搭建你的知识库
更多 >
LV.1
北京中科朗智科技有限公司架构师
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档