美文网首页
【学了就忘】Git操作 — 59.图形界面工具来查看版本历史

【学了就忘】Git操作 — 59.图形界面工具来查看版本历史

作者: 繁华似锦Fighting | 来源:发表于2021-06-08 01:21 被阅读0次

    gitk工具是Git提供的一个GUI工具,可以很清晰地查看和搜索版本库中的提交历史,以及支持对Gi的t相关操作。在Git本地版本库目录下直接输入gitk命令即可查看当前分支的。

    这个工具不用特殊的安装,一定要进入某一个仓库中,在git终端,执行gitk命令就能使用了。

    前提:一定要进入某一个仓库中,并且这个仓库中有Git日志,否则执行Gitk会提示Cannot find a git repository here.

    1、Gitk页面的布局

    先看一下Gitk全局页面,如下图:

    Gitk页面中包含5个部分:

    1. 主菜单栏。

    2. 提交信息显示区:显示提交的基本信息,包括提交的版本分支视图、message、提交人、提交时间和对应提交的SHA1-ID

    3. 查询检索区:在文本框中输入需要查找的检索信息,并且从左边和右边的下拉框中,选择相应类型,帮助我们快速精确的定位到要查找的信息,可按提交人等类型查找提交记录。

    4. 提交详情显示区:显示提交的详细信息。

    5. 文件列表显示区:可以显示提交中包含的文件列表。

      Patch:显示本次提交的差异文件列表。

      Tree:显示本次提交记录的所有文件列表。

    2、主菜单栏

    (1)File

    • Update:更新。

      如果在另一个窗口的命令行上做了什么,并希望将这些更改反映在Gitk中。

      该操作更新引用并显示新值,同时仍显示旧值。

      它在执行了像rebase这样的操作之后最有用,因为可以比较前一个分支头和新的分支头。

    • Reload:完全刷新,扔掉以前显示的所有内容。

    • Reread references:刷新标签和分支。

    • List references:出现一个窗口显示,以列表的方式显示分支和标签。

    • Start git gui:打开git gui工具。(类似于TortoiseGit)

    • Quit:退出Gitk。

    (2)Edit

    preferences:首选项,对Gitk的一些个人设置,如最大显示行数,宽度,空格个数,颜色和字体的设置等。

    (3)View

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

    通过New view...新建视图,进行自定义配置,并保存视图。

    下面介绍一写查询条件的设置:

    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记录,更加灵活。

    如下图:

    创建过视图后,再次在点击View菜单,就可以选择Edit view...编辑视图,和Delete view删除视图了。

    (4)Help

    • About gitk:Gitk简介。
    • Key bindings:查看快捷键。

    3、提交信息显示区

    (1)内容显示说明

    该区域显示版本库中提交的基本信息,包括提交的版本分支视图、message、提交人、提交时间和对应提交的SHA1-ID

    • SHA1 ID:所选提交的commit-id。
    • Row:当前行数/总行数,每个提交一行。

    (2)颜色和粗体

    • 本地分支名称是绿色背景,如master分支。
    • 远程分支名称是橘色和绿色混合的背景色。
    • 当前所在的分支或标签名称以粗体显示,如master分支。
    • 标签是黄色背景,如v1.0标签。
    • 黄色圆点标志,便是当前HEAD的指向。
    • 黄色的方块标记,代表该提交有notes。Git备注(notes)是用于给提交补充消息的,但是不会改变提交信息。

    (3)版本分支视图的使用

    在版本分支图中的某一个提交上右键,还可以进行很多的操作。

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

    1)选中一个分支,比如:master

    • check out this branch:检出这个分支,当有多个分支时,且当前HEAD不在该分支时可用。

    • rename this branch:重命名分支。

    • Remove this branch:移除分支,当有多个分支时,且当前HEAD不在该分支时可用。

    2)选中一个提交

    • Diff this->selectedDiff selected ->thisMake patch这几个需要2个commit进行对比,此时为灰色。

    • Return to markFind descendant of this and markCompare with marked commitDiff this->marked commitDiff 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。

    3)基于上面选中且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,与上图相反。

    这些是右键菜单的基本功能,可以找一个代码库多练习。

    4、查询检索区

    根据检索条件查找的窗口。

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

    在Find这一行有几个区域:

    1. Find ↑↓ commit:当根据检索条件检索出结果后,通过上下箭头切换不同的commit。
    2. 检索类型列表

      containing:包含。与后面的范围配合使用。
      touching paths:文件路径。
      adding/removing string:变更内容添加/移除的文本。
      changing lines matching:变更的行数。
    3. 检索条件,用户输入想要检索的内容。
    4. 检索方式

      Exact:精确匹配。
      IgnCase:忽略大小写。
      Regexp:正则表达式匹配。
    5. 检索范围

      All fields:所有范围。
      Headline:commit的标题。
      Comments:commit的注释。
      Author:作者。
      Committer:提交者。

    5、提交详情显示区

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

    1、在顶部可用的工具说明:

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

    2、在区域的顶部显示本次提交的信息:

    • Author:作者。
    • Committer:提交者。
    • Parent:当前commit的父节点,当为Merge节点时会显示多个Parent,此处为超链,可跳转到相应的节点。
    • Child:当前节点的孩子节点,当从该节点新建不同分支时,会有多个Child,此处为超链,可跳转到相应的节点。
    • Branches:当前节点最近的HEAD分支,当前提交的分支可跳转。 (也可以这样说,与该commit产生关联的分支是哪些)
    • Follows:当前节点最近的上一个Tag。
    • Precedes:当前节点最近的下一个Tag,有可能是计划Tag。
    • Tag:当前为tag时会显示标签信息。

    说明一下Author和Committer的含义

    • 每一次的提交既有作者Author,还有一个提交人Committer,为什么一次提交,又有作者又有提交人,他们的区别是什么?
    • 作者Author和提交人Committer在一次commit时,大部分的情况下都是一样的。
    • 有这么一种情况,在一个分支中的一个commit我很需要,我想把他挑出来,放到我自己开发的分支中,这个过程叫cherry-pick(就是挑选某一次的commit,放到另外一个分支),Git设计的时候为了尊重版权,是这样设计的,你拿来别人的commit,作者Author是别人,你修改后进行提交的时候,这个提交者Committer是你。在这种情况下,就会出现作者Author和提交人Committer不同的情况。

    6、文件列表显示区

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

    1、顶部工具说明

    • Patch:显示只有变更的文件列表,默认显示此项。
    • Tree:显示全部文件树,当想查看其他未变更文件内容时,可选择此项。

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

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

    7、总结

    基于这个gitk图形化界面,可以做很多的事情

    那么有图形界面为什么还要命令方式行查看版本历史呢?

    • 这个是有原因的,因为两种方式各有优缺点,因为好多开发人员他喜欢用vim这种编辑器来编辑文件内容,他很可能很喜欢用命令行的方式,他们习惯了,所以用命令行的方式效率更高,他可以想要什么,就用命令指定呈现出来,而且不用切换界面,所以这批人他是很喜欢用命令行方式的。
    • 那剩下还有一些很可能是一直操作windows操作系统的图形界面,习惯了这种图形化界面展示的,对图形界面的情有独钟。

    提示一点:在Git中即使有很多不了解,只要不做push操作,所有的操作都在本地,基本也没什么影响,大不了重新下载整个库好了。

    参考:

    相关文章

      网友评论

          本文标题:【学了就忘】Git操作 — 59.图形界面工具来查看版本历史

          本文链接:https://www.haomeiwen.com/subject/ngcqrltx.html