86

我正在向一个开发团队介绍 git,我发现 gitk 是一个了不起的工具。这也很难理解,因为理解 gitk 需要理解 git 历史和查看器工具本身。

有没有人对“gitk git 历史初学者指南”之类的东西有很好的参考?

4

4 回答 4

95

我从未见过任何专门针对 gitk 的东西。从“它是如何工作的”的角度来看,这是一个尝试。了解所有内容背后的命令(或至少通常等效的命令)有助于学习更轻松地使用命令行工具,并且还向您展示了在哪里查看文档以更好地理解 gitk!

文件菜单

这在最近几个主要版本中有所改变——我描述的是当前状态。

  • 更新和重新加载:这可能是最令人困惑的事情。重新加载会刷新所有内容,就像您使用相同的配置重新启动程序一样。这意味着如果一个分支已被删除/重新定位,如果一些提交现在悬空,你就看不到它们了。另一方面,更新会刷新所有信息,但仍会显示之前显示的所有提交。如果您正在变基并且想要确保您没有搞砸,这是一个很好的使用 - 您可以看到原始版本和变基版本。

  • 参考资料:很明显。引用包括标签和分支(可能是远程的)。您可以重新阅读它们,并列出单击特定的一个以在历史记录中显示它。

意见

正如手册页所说,gitk 采用git-rev-list选项来帮助指定应显示的历史记录。这些也可以在“查看”菜单中以交互方式设置。手册页是查找有关控制视图的方式的更多信息的好地方(主要位于提交限制部分)。如果你以前看过git-log,你会看到很多这样的。

帮助

这里有一个键绑定列表!甜的。

上下文菜单

这提供了几个常见的 git瓷器命令,通常处于常见/默认操作模式。列出它们至少可以帮助您找到正确的文档以了解它们的作用,如果您还没有的话!

  • git-diff(区分这个 <-> 选择
  • git-format-patch(制作补丁)
  • git-tag(创建标签)
  • git-diff-tree(将提交写入文件,很少使用)
  • git 分支
  • git-cherry-pick
  • git-reset(将分支重置到此处)这会提示您选择软、混合或硬,并简要提醒您各自的作用。手册页上有更长的描述,但当然你必须了解索引的概念才能真正理解它。

此时“标记提交”和相关命令应该是不言自明的。

在分支的上下文菜单中,我们有git-checkout-dgit-branch 的(删除)模式。

中段

  • SHA1 ID:当前提交的哈希。对于复制/粘贴到终端以对您使用 gitk 查找的给定提交执行操作非常有用。您也可以将哈希粘贴到此处。

  • 前进/后退按钮,行号......很明显!

  • 寻找!这里的选项也是不言自明的,但对于每个人的教育,它们类似于git-log参数:“包含”是--grep,“接触路径”是参数,添加/删除字符串是-S(pickaxe)。

消息/差异窗格

这里我们有提交消息以及 git-diff 的输出 - 这有点像 using git-log -p,还有一点额外的:

  • “分支”相当于git branch -a --contains=<commit>

  • "Precedes"/"Follows" 等价于git describe [--contains] <commit>( git-describe )

于 2009-10-15T07:29:33.430 回答
24

下面用截图介绍gitk中分支历史的可视化。

http://lostechies.com/joshuaflanagan/2010/09/03/use-gitk-to-understand-git/

  1. 左上窗格显示了对该存储库的一系列提交,最新的在顶部。
  2. 共有三个提交,全部由托尼·斯塔克(Tony Stark)提交。
  3. 最近一次提交的提交消息是“第三次提交”</li>
  4. 有一个本地分支,名为“master”,它指向最近的提交
  5. 有一个远程引用分支:来自名为“origin”的远程存储库的“master”分支,它也指向最近的提交
  6. 顶部提交旁边的黄点表示当前在我的工作文件夹中的快照(简称 HEAD)
  7. 我已经突出显示了第二次提交,以便我可以在下部窗格中看到它的详细信息
  8. 第二次提交的提交 SHA(唯一标识符,类似于 subversion 修订号)为
    3d024dd9e4a83d8c6a9a143a68b75d4b872115a6
  9. 右下角显示了受第二次提交影响的文件列表
  10. 左下角显示提交细节,包括完整的差异
  11. 单击右下窗格中的文件会将左下窗格中的差异滚动到相应的部分 12。
于 2012-07-02T10:52:44.210 回答
3

新手在“gitk 和历史的结合”方面真正可以使用的是具体解释如何通过查看 gitk 树视图来识别发生的事情。

据我所知 - 看树的正确方法是(当然):

 1. each node is a commit
 2. ultimate parent is at the bottom
 3. direct child to a commit is the one that happened first in the same branch (no matter who did it)
 4. the node with 2 or more children indicates ... ?
 5. merge commit node has 2 parents.
 6. rebase is recognized ... ?

屏幕截图也将不胜感激。

树实际上代表了存储库的当前状态。如果我们能够通过查看树视图来判断发生了什么,那就太好了。

谢谢

五。

于 2010-02-18T19:36:44.100 回答
1

我发现 gitk 界面唯一有用的是漂亮(多彩)的分支概述。

如果你想要 git 的 gui,请检查 windows 上的 TortoiseGit 或 Mac 上的 GitX 或 linux 上的 QGit。

于 2009-10-15T07:32:33.290 回答