我的任务是向同事们介绍Git,他们几乎完全是习惯使用TortoiseCVS的Windows用户。我已经使用Git大约一年了,但我几乎只使用了Unix命令行界面。
所以我一直在努力熟悉Windows GUI Git工具,包括TortoiseGit。但在我看来,这不仅仅是Git命令行界面上的GUI皮肤,而且实际上完全抽象了一些东西,特别是索引。
例如,当我在Windows资源管理器中右键单击一个新的无版本文件时,我可以从TortoiseGit菜单中选择“添加”,然后提交此文件,但是已经存在的文件中缺少相同的菜单项Git,在这种情况下我只看到“submodule add”选项。
是否无法与TortoiseGit进行交互?
我正在寻找git add
,git diff --cached
和git reset HEAD
的类似物。
Here's向Google小组发送了一条消息,但这是从去年夏天开始的。
我正在使用TortoiseGit版本1.6.5.0和msysgit版本1.7.4.msysgit.0,如果重要的话。我几天前安装了这些,所以它们可能是合理的最新版本。
答案 0 :(得分:21)
答案是:不,你不能。
对我来说,TortoiseGit是一个工具,你可以使用它从 - 在你的情况下 - CVS到Git的转换更容易(就像我在Does TortoiseGit actually make Git a lot easier to use like TortoiseSVN?的回答中写的那样)。但是一旦完成转换并且你的同事对Git越来越熟悉,现在是时候提出真正的工具了。
与Git交互的最强大的工具是命令行。期。 Git Gui和gitk
也可以使用,带来一些便利,但缺乏资源管理器集成(至少在叠加方面)。但是在多头开发盒的时代:为什么不让Git Gui在一台显示器(用于一般管理的东西)和另一台显示器上工作?
我最近还在我的团队工作中介绍了Git。我们习惯了TortoiseSVN,所以我也向他们展示了如何使用Tortoise添加文件,如何提交等等。但是在每张幻灯片上,我还注意到他们必须在Git Bash中输入以获得相同的结果。这样,一旦他们更有经验,他们就可以拿出介绍幻灯片并查看他们必须使用的命令。
答案 1 :(得分:4)
在有限的范围内,您可以在TortoiseGit中执行这些操作。例如,有一个reset对话框。它们并不突出(我认为),因为使用TortoiseGit意味着您对git索引的需求较少 - 有方便且功能强大的GUI方法可供选择和查看您想要提交的内容,因此索引变得不那么必要了。
话虽如此,TortoiseGit为初学者和高级git用户带来了很多有用的东西,尽管它只是命令行的补充,而不是替代。
作为一个额外的转换,您可能对我使用的批处理文件感兴趣,通过允许从命令行方便地调用这些TortoiseGit GUI窗口来模糊该行:https://github.com/ses4j/tgit
答案 2 :(得分:3)
事实上,甚至比迄今为止的答案还要糟糕。我尝试了一个实验:git add
对索引进行一些更改,恢复工作树以匹配当前的HEAD,并运行TortoiseGit提交。
它将已更改的文件列为有资格包含在提交中的文件之一,因此它知道某些内容已更改,这给人的印象是至少它知道如何完成已经提交的提交由另一个工具上演。但是当我选择它时,提交实际上使用了工作树副本并且销毁了索引中的未提交数据,并且提交最终成为该文件的无操作。
一种危险的工具,我想我会避开它。
答案 3 :(得分:0)
最近需要使用git add
在相同文件发生更改时应用存储,并发现我可以使用它的技巧:在repo中创建(创建)一个新文件(.txt for例如),打开提交窗口,显示已更改的文件和新文件。选择所有已更改的文件和新文件。右键单击新文件,您将在那里有Add
命令。它会将git add
应用于所有选定的文件。之后,您只需Revert
新文件即可。
所有这些都允许我对已修改的文件应用存储。