gitk详解

前言:

gitk是git图形化的界面软件版本,对仓库的管理更为直观,不需要在命令行中进行繁琐的控制,将各种信息合理的组织在不同的软件窗口中,让一些很繁琐的操作可以在图像软件中只需要一键获得。合理的结合命令行和图形工具可以大大提高软件开发和分支管理的效率。

介绍:

这是一个小仓库的gitk界面:其中各个窗口包含了仓库的所有信息

提交显示窗口
包含了提交信息与分支信息,当切换不同的commit时,底层的SHA1 ID区域会显示当前commit ID。
SHA1 ID:当选择commit时,该commit的ID会在这里显示。Row:当前行数/总行数。每个commit一行。

选中一个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 thiscommit:回退到当前commit。Revert和Reset是不一样的,Revert会生成一个新的commit,但Reset不会。

如果我们已经选中一个commit,并且MARK了,右键其他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

  • Find ↑↓ commit:当根据检索条件检索出结果后,通过上下箭头切换不同的commit。
  • 检索类型列表:containing:包含。与后面的范围配合使用。touching paths:文件路径。adding/removing string:变更内容添加/移除的文本。changing lines matching:变更的行数。
  • 检索条件,用户输入想要检索的内容。

检索方式:

  1. Exact:精确匹配。
  2. IgnCase:忽略大小写。
  3. Regexp:正则表达式匹配。

检索范围:

  1. All fields:所有范围。
  2. Headline:commit的标题
  3. Comments:commit的注释
  4. Author:作者
  5. Committer:提交者

提交详细信息
包括提交作者,提交者,ID,内容,parent以及child等等

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时会显示标签信息。

patch:
显示只有变更的文件列表,默认显示此项。

目录树
显示全部文件树,当想查看其他未变更文件内容时,可选择此项。

在文件路径上右键菜单:

  • Highlight this too:当其他文件已经高亮时,如此也想将变更文件包含该文件的commit也高亮可选择此项。

  • Highlight this only:只将变更文件包含该文件的commit高亮显示。

  • External diff:使用外部的diff工具查看。

  • Blame Parent commit:能够查看该文件的全部内容的变更记录,并能够进行切换。

  • Copy path:拷贝文件路径。

    1. 颜色和字体

  • 本地分支名称是绿色背景

  • 远程分支名称是橘色和绿色混合的背景色

  • 当前分支是加粗字体

  • 分支tag是黄色背景

  • 当前HEAD是黄色的圆点

  • 黄色的方块代表提交有notes

2.代码库操作 这些操作都作用在提交列表上,也就是最上面的面板

1)右键单击提交信息
创建tag
创建分支
重置当前分支到这个提交(soft/mixed/hard)
挑选(cherry-pick)当前提交给当前分支(这个命令也不常用,我百度了一下关于git的cherry-pick命令)

2) 右键单击分支名称
检出分支
删除分支

3.主菜单

  1. reload:
    如果你在其他界面使用命令行操作了一些东西,想通过gitk刷新出来看,可以点一下F5,F5会更新分支信息把新的值显示出来,并且会同时显示原来的值。这在rebase之类的操作后相当有用,因为你可以比较一下原来和现在的分支如果使用ctrl+F5,也就是完全刷新,就不会显示变更之前的值了

  2. list/choose references:
    要快速到指定分支,点击F2。显示出来的结果可能很多,可以通过下面的过滤框写一下模式。它不会模糊匹配,你要么写完分支名称,要么使用通配符*。
    点选一个分支整个gitk就去到新分支了,不过弹出来的窗口还在,可以继续点其他分支。

4.浏览diff信息 下面的面板左边部分是diff信息,右面部分是diff的文件列表。
5.查找提交

  • 搜索提交信息:任何时候点击"/"都可以开始搜索提交信息。匹配的提交会被加粗,中文尤其明显。前面说过,可以使用Shift+上下键进行导航。
  • 根据文件搜索:匹配到提交以后,在右下面板右击文件选择Highlight this only。 如果想匹配多个文件,可以右击其他文件,选择Highlight this too,这些文件不用是同一个提交里的。 注意这时候搜索模式就从containing变成了touching paths
  • 根据代码搜索:把搜索模式改成adding/removing string即可。

6.导航提交

  1. diff面板显示提交的Parent和Child。点击对应的hash码可转过去
  2. diff面板显示了当前提交所属的分支信息。点击跳转到对应分支的head。
  3. 如果提交图太复杂,连接两个提交的线就会断开。点击线部分(不是圆点或者箭头部分),diff面板会显示这一部分对应的详情。
  4. 如果点击了箭头,你会看到箭头翻转了,当前提交没有变。实际上箭头连接的是两部分提交。

在提交信息栏,引用一下网上介绍的不错的例子:

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

(0)

相关推荐