是否有类似于bzr qannotate的git blame图形界面?

24
作为一名之前使用过bzr的用户,对于git blame功能我还是新手。我正在寻找类似于bzr qannotate的好用的GUI工具。后者有两个主要视图:
  1. 文件内容查看器,带有短注释信息(谁在哪个版本中更改了该行)+ 根据提交者ID和更改的年龄进行背景着色。
  2. 文件日志查看器:当我在文件内容中单击行时,可以看到更改该行的版本以及有关其所有日志信息。

截图: enter image description here

我看到XCode IDE内置了这样的工具,虽然它在编辑器窗口内,因此不太方便。

到目前为止,我尝试过GitX 0.7.1和GitHub for Mac - 它们都没有"blame"功能。

我刚刚检查了Mac上的SourceTree,虽然它支持blame,但它相当原始,并且几乎与命令行git blame一样,尽管我可以双击该行,在另一个窗口中查看相应的修订和更改。但这仍然不如bzr qannotate好用。

是否有其他GUI工具可供使用?


1
嗨,bialix!好久不见了!不幸的是,我认为没有像QBzr一样适用于Git的工具。你们拥有一套非常棒的工具。我一直渴望Git的同等工具。 - John Szakmeister
1
你也可以看看 Tower,尽管它的价格有点高。 - millimoose
7个回答

12

tig 超赞!

按下 t 可以得到树状视图。然后,按下 B 显示高亮文件的 git blame


7

更简单的方法可能是使用git gui blame <参数>命令。您可以使用git gui --help命令获取有关参数的更多信息。此处为官方来源。


3

git gui 有此功能,但其实现不够完善。请进入“仓库” -> “浏览主分支文件”(或者“浏览其他分支文件”)-> 双击文件名。这个功能很基础,目前看起来没有太多的可配置性,但是它是可以使用的。


1
或者在 gitk 中(至少在 msysgit 中自带),右键单击差异视图中的一行,然后选择“显示此行的来源”。 - Mr_and_Mrs_D
@Mr_and_Mrs_D 太棒了,msysgit 已经自带了 Sourcetree。谢谢! - Noumenon

3

4
如何在其中访问“责备视图”?请问具体步骤是什么? - jpmc26
1
需要注意的是,此工具仅适用于Windows。它不适用于Linux或Mac。这里有一些旧的、不太详细的构建说明(针对旧版本的Linux),但作为Linux用户,我甚至不会尝试,因为我怀疑这将是一个永无止境的问题。我可以使用其他选项,比如我在我的eRCaGuy_dotfiles repo中写的基本的git blametool包装器,它围绕着git blame在"useful_scripts"目录下。 - Gabriel Staples

1

git blametool

我写了一个简单的包装器来使用 git blame,效果还不错。我称之为 git blametool。你可以在我的 eRCaGuy_dotfiles 仓库中找到它这里。调用 git blametool 将会在你选择的“blametool”中打开 git blame 的输出结果--这个“blametool”可以是任何文本编辑器。一些例子包括: vimemacsgeditnano、Sublime Text 3(subl,默认和我首选的)等。

安装

有关最新的安装说明,请参见git-blametool.sh文件顶部的注释。有很多方法可以做到这一点,但以下是一些可能的安装说明:

mkdir ~/dev  # make development dir
cd ~/dev
git clone https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles.git
cd eRCaGuy_dotfiles/useful_scripts
# make symbolic link to "git-blametool.sh" inside ~/bin
mkdir -p ~/bin 
ln -si "${PWD}/git-blametool.sh" ~/bin/git-blametool

关闭并重新打开您的终端。假设~/bin是您的PATH的一部分(如果您在Ubuntu上默认创建了~/bin目录,然后退出并重新登录),现在您可以访问git-blametool,只需简单地运行git blametool
运行git blametool -h以获取完整的帮助菜单。
设置您的blametool编辑器(有关详细信息,请参阅git blametool -h)。
# set your blametool editor as Sublime Text 3 (its command-line executable is 'subl'):
git config --global blametool.editor subl

# see what your current setting is
git config --global blametool.editor

# Other popular choices to set as your blametool editor:
git config --global blametool.editor vim
git config --global blametool.editor emacs
git config --global blametool.editor nano
git config --global blametool.editor gedit
git config --global blametool.editor leafpad
git config --global blametool.editor code # VSCode

如果你还没有Sublime Text 3,请下载它:https://www.sublimetext.com/3

安装Git插件,以便获得“git blame”语法高亮显示:按下Ctrl + Shift + P --> "Package Control: Install Package" --> 输入"Git"并选择该包。

使用方法

现在运行git blametool!它是对git blame的封装,因此可以接受任何git blame接受的选项!

示例用法:

git blametool -h  # help menu
git blametool somefile.c
git blametool somebranch somefile.c

演示

在你刚刚克隆的eRCaGuy_dotfiles存储库中,运行以下命令:

git blametool useful_scripts/git-diffn.sh

你会看到类似这样的东西: 输入图像描述 让我们深入挖掘。在第8行,我看到提交哈希值68e96491,所以我在Sublime Text中双击它并复制它。现在我可以在终端中运行这个命令:
git blametool 68e96491 useful_scripts/git-diffn.sh

现在我明白了: 在此输入图片描述 请注意,Sublime Text 3 中现在打开了两个选项卡,每个选项卡都显示了作为文件名一部分的 git blame 的提交哈希。我想要深入挖掘,所以我从第一行复制了哈希并运行:
git blametool c294f965 useful_scripts/git-diffn.sh

它在Sublime Text 3中将这个`git blame`打开为第三个标签。现在我看到了这个: enter image description here 我可以轻松地在这三个标签之间点击。很酷。现在想象一下,我找到了我要找的东西,所以为了进行并排比较,我运行了以下命令来查看`meld`中提交哈希`c294f965`和`68e96491`之间的比较:
git difftool 68e96491 68e96491 useful_scripts/git-diffn.sh

这是我看到的内容: 在此输入图片描述

如果你没有设置meld,请按照我的回答中的指示进行操作:Windows上使用Meld进行Git合并工具设置

git blametool的替代方案

以下是几个替代方案:

  1. GitHub
    1. 只需在 GitHub 上的存储库中导航到一个文件,并点击“Blame”链接 如图所示enter image description here
    2. 现在您将看到类似于 GitHub 中的漂亮的 git blame 视图,如下所示。请注意,您可以点击这些花哨的窗口图标来深入了解更早的 git blame 历史记录:enter image description here。例如,点击上面图片中的那个图标相当于运行 git blametool 68e96491 useful_scripts/git-diffn.sh,因为该行的 git blametool 输出显示 68e96491 是其提交哈希。
  2. "Git Blame" Sublime Text 3 package。我更喜欢我的 git blametool,但这也是一种选择:
    1. https://packagecontrol.io/packages/Git%20blame
    2. https://github.com/frou/st3-gitblame

另请参阅

非常有用!查看单个文件的编辑历史!
git log -p somefile.c
灵感来自:如何使用git blame查看先前提交? [我的答案] 在Windows上使用Meld进行Git合并工具 关键词:`git blametool`;在您选择的编辑器中打开`git blame`。

1

Aptana StudioSublimeTextTextMate 都有类似的可视化界面,但没有颜色。您可以配置 emacsvim 来显示彩色版本。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接