TortoiseGit vs Git扩展
在基于Windows的操作系统上使用Git扩展或TortoiseGit有什么好处和缺点?
我不知道GitExtensions,但我可以与TortoiseGit分享我的经验(被marc_s的评论所暗示):
优点:
- 与Windows完美整合(这是一个shell扩展)
- 与TortoiseSVN几乎相同的用户界面(如果您已经使用了TortoiseSVN,那么您知道该期待什么)。
缺点:
- 你将很难理解如何使用git。
TortoiseGit的问题在于,与TortoiseSVN合作的人会认为所有的东西都会(或者应该)像SVN一样工作,最终永远不会真正理解如何使用git。 作为个人经验,我工作了两年的公司从SVN迁移到git,每个使用TortoiseGit的开发者都不知道自己在做什么,有时甚至搞砸了他们的本地仓库。 最后,他们放弃了TortoiseGit,花时间学习“困难的方式”(shell,Windows上的msysGit),从此以后每个人都开心。
结论:直接使用msysGit并正确学习git。 你将会避免将来的许多麻烦。
我的公司试了两次,并迅速放弃了Tortoise Git。 它经常坠毁。 编码者声称,龟鳖是不够的能力,但我没有检查自己。 但我确实看到了很多自己的崩溃。
编码喜欢git bash,其他人使用,但讨厌git扩展。 虽然他们甚至还有一些开辟了git bash。 Git bash是不可避免的看到进度计数器。
Git扩展没有选项来显示进度计数器在拉。 所以,只有Git扩展,你坐在一个神秘的非进度栏前,不知道发生了什么,是否失败。 最糟糕的是缺less或不正确的密码:Git扩展只是让你永远等待,显示相同的发光酒吧,如果它做了一些耗时的事情。 Git Extensions的另一个惊悚就是频繁地放弃了“内存不足”,在这个版本中,许多大文件都被压缩了。 在这种中止之后,非编码用户总是被问题所困扰。 他们没有更改的许多文件显示为已更改,locking文件阻止他们处理问题等。
在我看来,这两种GUI工具都不成熟。
你需要Git扩展的一个重要原因 – 它显示了提交日志的graphics视图(见下文)。 没有这个graphics化的视图,我不认为大多数人会不知道分支,提交,重新装订,樱桃采摘等等(我知道我没有)。
你也希望在命令行上做一些你的工作,这是你实际使用git的最好方法,因为你得到的所有帮助都是基于命令行的。
所有这一切,你也可以使用Tortoise Git(假设它有效),因为它们都调用相同的命令行可执行文件,并在同一个git存储库上运行。
大多数的IDE也支持git,JetBrains IDEA在添加变更列表和其他function方面做得非常出色。
我没有太多的TortoiseGit的经验,但我安装了,目前正在使用GitExtensions v2.21。
使用GitExtensions的最大优点是:
- 可视化的gitkgraphics显示代码行和分支,所有必要的信息在标签中可用,消除了任何需要与不友好的SHA的工作。
- 能够以pipe理员和所有其他用户的身份安装在同一台PC上,就像任何普通用户一样使用它。
- 内置与Windows资源pipe理器的shell集成
- 开箱即用的与Visual Studio集成(Windows Eclipse用户只需要msysgit,因为他们有自己的GUI来取代GitExtensions的需要)
- 易于使用的安装程序,预先打包所有必要的和先决条件的function,以开箱即用(SSH客户端,KDiff,msysgit)。
- 与GitHub集成(叉,克隆,拉都是精简)
缺点:
- 文档不能跟上不断添加的新function。 例如,我仍然不知道如何使用脚本function。
为免我们忘记这是一个完全免费的计划,作为一个没有附加条件的选项提供给我们,我看不出有如此高的预期的理由,好像我们是有偿的客户? 我已经看到了一些中止和冻结,前面的用户提到,但我相信大多数已经在v2.24固定。 很多中止和失败的行为并不是GitExtensions的错,但更多的是GitExtensions之外的系统问题的症状(例如,configuration错误的SSH设置,托pipe远程回购的服务器上的文件权限问题等)。 例如,有一次,我做了一个简单的推动,导致失败和中止。 事实certificate,我试图推进的远程是一个很长的path名,这是导致问题的Mac服务器托pipe回购。
不pipe怎么说,然而,我的GitExtensions的经验是相当积极的。 我发现上面列出的好处使得偶尔放弃并冻结,直到错误得到修复是值得的。
我不能说Git扩展,因为我从来没有使用它。 有一些纯GIT的问题。 例如,无法整合GVIM。 Tortoise Git有一个集成的编辑器和diff工具(这是惊人的),所以这是一个非常好的方便。 我喜欢Scott Chacon书中的分支图,并希望TGit有一个类似的图。 他们有一个显示分支的工具,但不像书中的那么好。
有一点需要记住的是,由于TGit只是GIT之上的一个shell,所以混合这两种方法并没有什么坏处。 我使用TGit来处理大部分的事情,但是在GIT中使用尴尬的命令,或者在TGIT中我不太了解。 但是,即使你打算使用TGIT,如上所述,仍然重要的是首先理解GIT的基础知识。 我通读了Chacon一书中的第一章,也就是说,可以在http://progit.org/book/上免费在线阅读,或者在Amazon上购买。; 如果你和我一样,你可能想多读几遍,让这个范例沉入其中。这并不复杂,但与以前的VCS完全不同。
TGit从来没有碰到过我,因为它对其他一些评论者来说,但是我的回购很less。 它不止一次地吃了我的提交意见,这可能是用户错误。 既然你可以回去重新编辑评论,这只是一个烦恼,值得一个graphics用户界面的便利,与窗口显示大量的信息一目了然。
只是为了对付上面的一些言论:
有了正确的期望,TortoiseGit提供了一个在Windows上使用git的优秀gui。 它不是TortoiseSvn的替代品,而是使用gitk + git-gui(可以被认为是核心gitfunction的一部分,并且可以在msysgit中访问)的改进gui。 我所看到的唯一不好的事情就是你不需要记住checkout / rebase / merge等所有的确切命令,因为通过GUI可以非常方便地完成所有这些操作。 putty / ssh问题与Windows上对ssh的低级支持有关,并不是TortoiseGit独有的。
我使用GitExtensions。 我还没有使用过TortoiseGit,但我们其他的开发者之一喜欢它,并拒绝使用GitExtensions。 他的推理是:1)熟悉; 2)它有很大的Windows资源pipe理器集成。
使用GitExtensions我倾向于将Windows资源pipe理器集成仅用于三件事:
1)创build一个新的本地仓库(上下文菜单项Git Init Here,这实际上是Git for Windows命令; GitExtensions位于Git for Windows之上);
2)打开Git Extensions GUI(浏览窗口);
3)将远程存储库克隆到本地存储库(上下文菜单项“Git扩展”>“克隆”)。
几乎所有的东西,我只需要GitExtensions界面,然后从那里开始工作。
GitExtensions的开发人员声称几乎所有的命令都可以从GUI执行。 这并不完全正确,但是我发现我只需要在复杂的任务中每月一次或两次进入命令行界面。
在某些情况下,通过隐藏底层Git命令的复杂性,GUI可以简化复杂的任务。 这有时涉及到将几个Git命令组合成一个单独的动作。 例如,在GUI中组合添加子模块,初始化子模块并将其更新为单个动作的子模块。 在另一种情况下,GUI通过提供一个Git缺less的命令来简化任务 – 删除一个子模块(在Git中你必须手动编辑各种文件,如.gitmodules和.git / config来删除一个子模块)。 我有兴趣知道如果TortoiseGit以类似的方式简化复杂的任务。
GitExtensions也有相当基本的Visual Studio集成。 不知道TortoiseGit是否。 Visual Studio 2008和2010有一个单独的Git源代码控制提供程序,它提供了更广泛的Visual Studio集成。 但是,安装Git源代码pipe理提供程序,我发现我从来没有使用它。 我从Visual Studio中使用的唯一GitExtensions集成在工具栏上,用适当的资源库打开GitExtensions GUI。 我将在一个监视器上使用Visual Studio并在另一个上打开GitExtensions。
至less从2.32版本开始,GitExtensions显示了工具栏中未提交文件的数量。 我以前用2.24没有这个function,非常方便。 就是否有任何未提交的更改提供即时反馈。
为了快速简单的编译,自定义和构build扩展,GitExtensions比C ++更好(C#),而不是TortoiseGit(Visual C ++ MFC)
为了便于携带,GitExtensions比TortoiseGit(仅适用于Win32 / 64)更好(Windows上的.NET / Linux / Mac上的mono)
要在资源pipe理器中使用图标叠加层,请使用TortoiseGit
对于某些特性的性能来说,TortoiseGit更好,因为它调用静态/dynamic库来从存储库中检索结果,而GitExtensions只调用具有较大开销的git.exe命令行。
从TortoiseSVN迁移,TortoiseGit将比GitExtensions更熟悉
date:2011-08-27。
在这一点上,龟鳖Git根本不工作,并在谷歌代码网站上的问题一个月没有得到关注: http : //groups.google.com/group/tortoisegit-users/browse_thread/thread/9090337b7936e1e1 。
从Tortoise Git的第一个用法克隆一个网站(并开始开发)的popup框中的“Load Putty Key”框是灰色的。 所以没有find私钥,错误信息是'连接中断'成功!
Git Bash完美工作,尽pipe基于控制台。 如果上面的每个人都谈到在使用Tortoise Git的时候不了解Git的概念,那么即使没有考虑到我花了3个小时来让Tortoise Git为开发人员工作,我也会远离它。 他将不得不学习控制台Git,或者走下去。
我在15分钟内完成了工作,而我只是一个试图雇佣程序员的黑客;-)
PS,Eclipse有三个主要版本控制库“连接器”,是一个非常好的编辑器。