TortoiseGit与Git Extensions的比较

80

在基于Windows的操作系统上,使用Git Extensions或TortoiseGit有哪些优缺点呢?


7
如果你已经习惯了TortoiseSVN,那么TortoiseGit是一个不错的选择。它是一个外壳扩展程序 - 因此你需要在Windows资源管理器中使用它。GitExtensions则是一个完整的Windows应用程序,可以从Windows资源管理器单独启动;但有时候它会让我感到有点“奇怪”,并且它会经常崩溃和卡死(至少对我来说是这样)。 - marc_s
10个回答

102

我不熟悉GitExtensions,但可以分享我使用TortoiseGit的经验(marc_s的评论中也提到了):

优点:

  • 与Windows系统完美集成(作为shell扩展程序)
  • 几乎和TortoiseSVN一样的用户界面(如果你已经使用过TortoiseSVN,你会知道可以期待什么)。

缺点:

  • 你会很难理解如何使用git。

TortoiseGit的问题在于使用过TortoiseSVN的人会认为所有的东西都应该像在SVN中那样(或应该那样),结果最终并没有真正理解如何使用git。以个人经验而言,我所在的公司在2年后从SVN迁移到git,在使用TortoiseGit的每个开发人员最终都没有真正知道他们在做什么,有时甚至会弄坏本地仓库。最终,他们放弃了TortoiseGit,并学习了git的“硬核”方式(在Windows上使用shell、msysGit),自那时以来,大家一直很满意。

结论:直接使用msysGit并适当地学习git。这将避免许多未来的头痛。


1
作为一个曾经使用Git Extensions的人,现在不得不在另一个项目中使用TortoiseSVN的我,发现使用TortoiseSVN非常令人恼火。它往往会搞乱SVN仓库,尽管最终我已经习惯了它。从我的经验和Rafael的评论来看,我认为Tortoise的做事方式与Git之间肯定存在阻抗不匹配。 - Simon Elms
4
我个人使用TortoiseGit进行提交(以便审查提交)和日志查看,对于其他操作则使用命令行。 - user133408
2
TortoiseGit并不难学,它的操作方式就像TortoiseSVN一样。顺便说一下,我同时使用TortoiseGit和gitextension。 - Cheung
2
@user133408:你可以直接在Git Bash中使用“gitk”和“git-gui”来完成这个任务。没有必要使用臃肿的软件,它会使整个计算机变得缓慢,减慢文件浏览器的速度,并导致文件锁定。 - v.oddou
请更新答案,写上:“msysGit已被Git for Windows 2.x取代”。 - Danijel
TortoiseGit的一个大问题是它使用了过于激进的缓存抖动算法,导致Windows资源管理器以及整个计算机变得非常缓慢。 - Warren P

26

我的公司尝试了两种工具,但很快就放弃了Tortoise Git。它经常崩溃。程序员们声称Tortoise Git不够强大,但我没有亲自检查过。但我确实亲眼看到了许多崩溃。

程序员更喜欢使用git bash,其他人使用但不喜欢git Extensions。即使其中一些人额外打开了git bash。git bash不可避免地可以看到进度计数器。

Git Extensions没有选项可以在拉取(pull)时显示进度计数器。所以仅有Git Extensions时,你坐在一个晦涩的非进度条前,不知道发生了什么以及是否出现了问题。最糟糕的是缺少或错误的密码:Git Extensions只让你永远等待,显示相同的耗时进度条,就像正在处理某些东西。Git Extensions的另一个可怕之处是在版本控制许多大文件并进行pull rebase时,频繁中止且出现“内存不足”的情况。在这样的终止后,非编程用户总是面临问题。他们没有更改的许多文件会出现为更改的文件,并且锁定文件会阻止他们处理问题等等。

我认为这两个GUI工具都不成熟。


作为更新,虽然错误消息仍然可能有点令人困惑,但它们现在实际上已经正确显示出来了。 - Teo Klestrup Röijezon
7
Git Extensions很久以前就支持在拉取(pull)过程中显示进度。同时,Git进程中断的问题也得到了修复。 - KindDragon
1
一般而言,如果KindDragon在多个网站上使用相同的用户名,则他是Git Extensions开发人员之一,因此他的信息很可能是正确的。 - Simon Elms
自从2016年开始,我就一直使用TortoiseGit,并且一直很容易上手。 - Marc.2377

21
你想要Git Extensions主要是因为它展示了提交日志的图形界面(见下图)。没有这个图形界面,我认为大部分刚接触git的人不会理解分支、提交、变基、挑选等操作(包括我自己)。
你也需要在命令行上进行一些工作,这是实际使用git的最佳选择,因为你得到的所有帮助都是基于命令行的。
话虽如此,你也可以使用Tortoise Git(假设它可以正常运行),因为它们都调用相同的命令行可执行文件,并作用于同一个git库。
大多数IDE也有git支持,JetBrains IDEA在其上添加了更改列表和其他功能方面表现出色。 Git Extensions log view

6
这是一个非常重要的考虑因素。由于其源自CVS/SVN,TortoiseGit是以文件和目录为导向的。但是Git本身不是这样 - 它是以历史为导向的,文件和目录只是与该历史相关的内容。事实上,任何通过文件/目录上下文菜单作为主要访问手段的Git工具都存在缺陷。这包括Git扩展在内。 - Jeremy
1
记录一下:TortoiseGit几年前实现了一个日志图形视图。现在它已经得到了丰富的开发,您可以从那里完成TortoiseGit 95%的功能。 - Martin Grey

13

我对TortoiseGit没有太多的经验,但我已经安装并正在使用GitExtensions v2.21。

使用GitExtensions的最大优点:

  • 可视化gitk类似的代码行和分支图形显示,所有必要的信息都在选项卡中提供,消除了需要处理不友好SHA的必要性。
  • 可以作为管理员安装,同一台计算机上的其他用户可以像常规用户一样使用它。
  • 与Windows Explorer内置的Shell集成
  • 与Visual Studio的开箱即用集成(Windows Eclipse用户只需要msysgit,因为他们有自己的GUI来替代GitExtensions)
  • 易于使用的安装程序,预装了所有必需和先决条件功能,可以直接开始使用(SSH客户端、KDiff、msysgit)。
  • 与GitHub的集成(分叉、克隆、拉取都已简化)

缺点:

  • 文档没有跟上新功能的添加。例如,我仍然不知道如何使用脚本功能。

我们不要忘记,这是一个完全免费的程序,作为无附加条件的选择提供给我们,我不明白为什么会对其抱有如此高的期望值,仿佛我们是付费客户?我看到之前的用户提到了一些中止和冻结,但我认为这在v2.24中已经得到了大部分修复。很多中止和失败的操作并不是GitExtensions的错,而是系统性问题的症状(例如,远程repo主机上的文件权限问题,SSH配置错误等)。例如,有一次我做了一个简单的push操作导致失败和中止。原来我试图推送的远程路径名非常长,这给托管repo的Mac服务器带来了问题。

总之,我的GitExtensions体验还算不错。我发现上述优点使得即使在偶尔遇到中止和冻结时也是值得使用的,直到错误被修复。


12

我无法评论Git Extensions,因为我从未使用过。我在使用纯GIT时遇到了一些问题,例如无法集成GVIM。Tortoise Git有一个集成的编辑器和差异工具(非常棒),所以这是一个非常好的便利。我喜欢Scott Chacon书中的分支图表,并希望TGit有类似的图表。他们确实有一个显示分支的工具,但不如书中那个漂亮。

需要记住的一件事是,由于TGit只是在GIT之上的外壳,混合两种方法并不会有任何危害。我大多数情况下使用TGit,但会在需要处理笨拙或我在TGit中不太理解的命令时使用GIT。但即使您打算使用TGit,如上所述,了解GIT的基础知识仍然很重要。我建议阅读Chacon书的前三章(可在http://progit.org/book/免费在线获取,也可在亚马逊购买)。如果你像我一样,可能需要多次阅读这些章节才能让思想方式真正沉淀。它并不复杂,但与以前的版本控制系统非常不同。

TGit从未崩溃过,但对于其他评论者而言,他们的repo可能较小。它确实在多个场合吞噬了我的提交注释,这可能是用户错误。由于您可以返回并重新编辑注释,这只是一个麻烦,但值得用GUI进行方便的代价,窗口可以一目了然地显示大量信息。


只是想评论一下,我也有同样的经历。在执行不太典型的操作时,除非使用bash更容易,否则使用TGit。TGit具有出色的日志、内置的差异比较功能,并且现在在2016年已经非常稳定。 - Raj

10

仅针对上面的一些评论作出反驳:

以正确的期望来使用TortoiseGit,它提供了一个优秀的GUI界面,在Windows上与git一起工作。 它不是TortoiseSvn的替代品,而是一个改进的GUI,可以用gitk + git-gui(可视为核心git功能的一部分,并可在msysgit中访问)实现更高效的操作。 我唯一看到的问题是您不需要记住checkout / rebase / merge等准确命令,因为可以通过GUI非常方便地完成所有这些操作(这就是整个意义所在)。 putty / ssh问题更多地与Windows上ssh的支持较差有关,而不是TortoiseGit独有的。


2
同样支持TortoiseGit的原因包括:1)在老旧电脑上比GE快得多,不会出现几秒钟的载入延迟;2)它允许使用默认的diff-viewer编辑当前文件;3)它在上下文菜单中有更多的选项;4)提交查看器中有可配置的列;5)在GUI中它会注意到autocrlf设置(即不会像GE一样在暂存时重新提醒)。 - Annarfych
只需使用OpenSSH而不是Putty,您就可以愉快地使用它了。 - Marc.2377

7
我使用GitExtensions。我没有使用TortoiseGit,但我们的另一位开发人员喜欢它,并拒绝使用GitExtensions。他的理由是:1)它很熟悉;2)它有出色的Windows Explorer集成。
使用GitExtensions,我倾向于仅使用Windows Explorer集成进行以下三件事:
1)创建一个新的本地存储库(上下文菜单项Git Init Here,实际上是一个Git for Windows命令;GitExtensions位于Git for Windows之上);
2)打开Git Extensions GUI(浏览窗口);
3)将远程存储库克隆到本地存储库(上下文菜单项Git Extensions> Clone)。
对于几乎所有其他事情,我只需使用GitExtensions GUI并从那里工作。
GitExtensions的开发人员声称几乎可以从GUI执行任何命令。这不完全正确,但我发现我每个月只需要进入命令行界面一两次进行复杂的任务。
在某些情况下,GUI通过隐藏底层Git命令的复杂性使复杂任务变得简单。这有时涉及将几个Git命令组合成单个操作。例如,在GUI中创建子模块,其中GUI将添加子模块,初始化和更新组合为单个操作。在另一种情况下,GUI通过提供Git缺少的命令来简化任务-删除子模块(在Git中,您必须手动编辑各种文件,例如.gitmodules和.git / config以删除子模块)。我很想知道TortoiseGit是否以类似的方式简化复杂任务。
GitExtensions还具有相当基本的Visual Studio集成。不知道TortoiseGit是否有。对于Visual Studio 2008和2010,有一个单独的Git源代码控制提供程序,提供了更广泛的Visual Studio集成。然而,安装了Git Source Control Provider后,我发现我从未使用过它。我从工具栏中使用的唯一GitExtensions集成是打开具有适当存储库的GitExtensions GUI。我将在一个监视器上使用Visual Studio,在另一个监视器上打开GitExtensions。
从至少2.32版本开始,GitExtensions在其工具栏中显示未提交文件的数量。我以前使用的是2.24,它没有这个功能,非常方便。可以立即反馈是否有任何未提交的更改。

5
为了快速、简便地进行编译、自定义和构建扩展程序, GitExtensions (C#) 比 TortoiseGit (Visual C++ MFC) 更好。
为了实现可移植性, GitExtensions (.NET on Windows / mono on Linux/Mac) 比 TortoiseGit (仅支持 Win32/64) 更好。
要在资源管理器中使用图标叠加功能,请使用 TortoiseGit。
对于某些功能的性能, TortoiseGit 更好,因为它调用静态/动态库从存储库中检索结果,而 GitExtensions 只调用 git.exe 命令行,其开销更大。
要从 TortoiseSVN 迁移, TortoiseGit 比 GitExtensions 更熟悉。

1
编译GitExtensions不需要Visual Studio的专业版,但是编译TortoiseGit需要。 - linquize
1
如果您想要构建GitExtensions的Shell扩展,需要使用专业版。核心部件可以使用Express Edition编译。 - linquize
TortoiseGit 调用 libgit2,因此它的速度非常快(大写和加粗是有意为之的)。 - Marc.2377

0

日期:2011年8月27日。

目前,Tortoise Git完全无法使用,而且在Google Code网站上的问题已经一个月没有得到关注:http://groups.google.com/group/tortoisegit-users/browse_thread/thread/9090337b7936e1e1

Tortoise Git第一次使用时弹出的窗口中的“加载Putty密钥”框被禁用了。因此,没有找到私钥,错误消息是“连接断开”成功!

Git Bash可以完美地工作,尽管是基于控制台的。如果以上所有人在使用Tortoise Git时都谈不上理解Git的概念,那么我会远离它,即使不考虑我花费的最后3个小时来让开发人员使用Tortoise Git。他将不得不学习控制台Git或走另一条路。

我只用了15分钟就把它搞定了,而我只是一个试图雇佣程序员的黑客 ;-)

另外,Eclipse拥有所有三个主要版本控制存储库“连接器”,是一个非常好的编辑器。


4
时间:2012年9月4日。一年之后,这个问题解决了吗?我认为TortoiseGit正在改进。 - linquize

0

不要使用TortoiseGit :-) 我在一些长期咨询项目中被迫使用它,但你并没有学会Git。你只是学会了基本的SVN,并认为它就是Git。


这就是发生在我身上的事情。但是它确实帮助我开始了解源代码控制,而且当时我已经学习了大约一年的基础知识。 - Shawn Mclean

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