在基于Windows的OS上使用Git Extensions或TortoiseGit有什么优点和缺点?
Answers:
我不知道GitExtensions,但可以与TortoiseGit分享我的经验(marc_s的评论中也有此说法):
优点:
缺点:
TortoiseGit的问题在于,使用TortoiseSVN的人们会认为一切(或应该)都将完全像在SVN中一样工作……并且最终永远无法真正理解如何使用git。作为个人经验,我工作的公司在两年后从SVN迁移到git,每个使用TortoiseGit的开发人员最终都不是真正了解他们在做什么,有时甚至搞砸了他们的本地存储库。最后,他们放弃了TortoiseGit并花时间“辛苦地学习” git(Windows上的shell,msysGit),从那时起,每个人都很高兴。
结论:只需直接使用msysGit即可正确学习git。您将来会避免很多头痛。
我的公司尝试了这两种方法,并迅速放弃了Tortoise Git。它崩溃的频率更高。编码人员声称Tortoise Git不够强大,但我自己没有检查。但是我确实看到了很多《崩溃》本身。
编码人员更喜欢git bash,其他人则讨厌git扩展。尽管甚至其中一些还额外打开了git bash。Git bash不可避免地要看到进度计数器。
Git Extensions没有选择在拉动期间显示进度计数器。因此,仅使用Git Extensions,您就坐在莫名其妙的非进度条前面,不知道会发生什么以及是否失败。最糟糕的是缺少密码或密码不正确:Git Extensions只是让您永远等待,显示出一条发光的条,就像在做耗时的事情一样。Git扩展的另一个恐怖之处在于,在对许多大文件进行版本控制并通过重新设置基准时,经常会因“内存不足”而中止运行。在中止之后,非编码用户总是会遇到很多问题。他们没有更改的许多文件显示为已更改,并且锁定文件阻止它们处理问题,等等。
我认为两个GUI工具都不成熟。
您想要Git Extensions的一个重要原因-它向您显示提交日志的图形视图(请参见下文)。没有该图形视图,我认为git的大多数新手都不会了解分支,提交,重新设置基准,摘樱桃等方面的工作(我知道我没有)。
您还将要在命令行上做一些工作,最好是实际使用git,因为您获得的所有帮助都将基于命令行。
综上所述,您也可以使用Tortoise Git(假设它可以正常工作),因为它们都调用相同的命令行可执行文件并作用于相同的git存储库。
大多数IDE也都具有git支持,JetBrains IDEA在添加更改列表和其他功能方面做得很好。
我没有使用TortoiseGit的丰富经验,但是我已经安装了,并且当前正在使用GitExtensions v2.21。
使用GitExtensions的最大优势:
缺点:
唯恐我们忘记它是一个完全免费的程序,并且作为不带任何附加条件的选项提供给我们,我不认为对它抱有如此高的期望,就像我们是有偿客户一样?我已经看到了先前用户提到的一些异常终止和冻结,但是我相信大多数错误和冻结已在v2.24中修复。大量中止和失败的操作实际上并不是GitExtensions的错,而是GitExtensions之外的系统性问题的征兆(例如,错误的SSH设置,托管远程仓库的服务器上的文件权限问题等)。例如,曾经有一次我做一个简单的推送导致失败和中止。事实证明,我尝试推送到的远程服务器的路径名很长,这对托管该存储库的Mac服务器造成了问题。
不管怎么说,不过,我在GitExtensions方面的经验是相当积极的。我发现上面概述的好处使其值得忍受偶尔的异常终止和冻结,直到修复了错误为止。
我从来没有使用过它,所以无法与Git扩展交谈。纯GIT出现了一些问题。例如,无法集成GVIM。Tortoise Git具有集成的编辑器和差异工具(这非常了不起),因此非常方便。我喜欢Scott Chacon书中的分支图,并希望TGit具有类似的图。他们确实有一个显示分支的工具,但是它不如书中的那样好。
要记住的一件事是,由于TGit只是GIT之上的外壳,因此将这两种方法混合使用不会有任何危害。我使用TGit进行大多数操作,但是对于一些笨拙的命令或者我对TGit不太了解的命令,请使用GIT。但是,即使您打算使用TGit,如上所述,首先了解GIT的基础仍然很重要。我已经通读了Chacon书中的第一,三章(可在http://progit.org/book/上免费在线获得,也可以在亚马逊上购买)。如果您像我一样,则可能需要多次阅读它们,以使范式沉入其中。这并不是很复杂,但它与以前的VCS完全不同。
TGit从未像其他一些审阅者那样使我崩溃,但是那时我的回购规模很小。它确实吞噬了我的提交评论不止一次,这可能是用户错误。由于您可以返回并重新编辑评论,因此这很烦人,并且值得拥有GUI,窗口一目了然,可显示大量信息。
只是为了反驳上面的一些评论:
有了正确的期望,TortoiseGit为在Windows上使用git提供了出色的gui。它不是TortoiseSvn的替代品,而是使用gitk + git-gui(可以视为核心git功能的一部分,可以在msysgit中访问)改进的gui。我看到的唯一不好的事情是,您将不需要记住所有用于checkout / rebase / merge等的确切命令,因为可以通过gui(非常重要)很方便地完成所有这些操作。腻子/ ssh问题与Windows上对ssh的较差支持有关,并非TortoiseGit独有。
autocrlf
在GUI中进行设置(即不会像GE那样在升级时发出警告);
我使用GitExtensions。我没有使用过TortoiseGit,但我们的其他开发人员之一对此非常喜欢,并且拒绝使用GitExtensions。他的推理是:1)很熟悉;2)它具有出色的Windows资源管理器集成。
使用GitExtensions,我倾向于将Windows资源管理器集成仅用于三件事:
1)创建一个新的本地存储库(上下文菜单项Git Init Here,它实际上是Windows的Git命令; GitExtensions位于Windows的Git之上);
2)打开Git Extensions GUI(浏览窗口);
3)要将远程存储库克隆到本地存储库(上下文菜单项Git Extensions>克隆)。
对于几乎所有其他内容,我只是启动了GitExtensions GUI并从那里开始工作。
GitExtensions的开发人员声称几乎可以从GUI执行任何命令。这不是很正确,但是我发现我仅需要每月一次或两次进入命令行界面即可完成复杂的任务。
在某些情况下,GUI通过隐藏底层Git命令的复杂性来简化复杂的任务。有时,这涉及将多个Git命令组合为一个动作。例如,创建子模块,其中GUI结合了添加子模块,对其进行初始化并将其更新为单个操作的过程。在另一种情况下,GUI通过提供Git缺少的命令来简化任务-删除子模块(在Git中,您必须手动编辑.gitmodules和.git / config之类的各种文件以删除子模块)。我想知道TortoiseGit是否以类似的方式简化了复杂的任务。
GitExtensions还具有相当基本的Visual Studio集成。不知道TortoiseGit是否这样做。对于Visual Studio 2008和2010,有一个单独的Git源代码控制提供程序,它提供了更广泛的Visual Studio集成。但是,安装了Git源代码控制提供程序后,我发现我从未使用过它。我在Visual Studio中使用的唯一GitExtensions集成是在工具栏上,用于使用适当的存储库打开GitExtensions GUI。我将在一台显示器上使用Visual Studio,在另一台显示器上打开GitExtensions。
至少从2.32版开始,GitExtensions会在其工具栏中显示未提交的文件数。我以前使用的是2.24,它没有此功能,非常方便。提供有关是否有未提交的更改的即时反馈。
为了快速,轻松地进行编译,自定义和构建扩展,GitExtensions(C#)比TortoiseGit(Visual C ++ MFC)更好(C#)
对于可移植性,GitExtensions比TortoiseGit(仅Win32 / 64)更好(Windows上的.NET / Linux / Mac上的mono)。
要在资源管理器中使用图标覆盖,请使用TortoiseGit
对于某些功能的性能,TortoiseGit更好,因为它调用静态/动态库从存储库中检索结果,而GitExtensions仅调用开销更大的git.exe命令行。
要从TortoiseSVN迁移,TortoiseGit将比GitExtensions更熟悉
日期:2011-08-27。
目前,Tortoise Git根本无法使用,而且Google代码网站上的问题在一个月内没有受到关注:http : //groups.google.com/group/tortoisegit-users/browse_thread/thread/9090337b7936e1e1。
Tortoise Git首次用于克隆站点(并开始开发)的弹出窗口中的“ Load Putty Key”框将显示为灰色。因此未找到私钥,并且错误消息为“连接断开”成功!!!
尽管基于控制台,但Git Bash可以完美运行。而且,如果以上每个人都在谈论使用Tortoise Git时不理解Git概念,那么我会基于此而远离它,甚至不考虑我为使Tortoise Git为开发人员工作而花费的最后3个小时。他将不得不学习控制台Git或走这条路。
我在15分钟内就可以使用它,而我只是一个试图雇用程序员的黑客;-)
PS,Eclipse具有所有三个主要的版本控制存储库“连接器”,并且是一个很好的编辑器。